2012-05-28 9 views
6

दे रहा है मैं इस Jodatime का उपयोग कर DateTime,दिनांक समय अप्रत्याशित परिणाम

DateTime dateTime = DateTime 
      .parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy")) 
      .plusSeconds(2075866000); 
    String dateTimeStr = DateTimeFormat.forPattern(
      "yyyy/MM/dd HH:mm:ss").print(dateTime); 
    System.out.println(dateTimeStr); 

मैं भी Jodatime MutableDateTime

MutableDateTime dateTime = MutableDateTime 
      .parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy")); 
    dateTime.add(DurationFieldType.seconds(), 2075866000); 
    String dateTimeStr = DateTimeFormat.forPattern(
       "yyyy/MM/dd HH:mm:ss").print(dateTime.toDateTime()); 
    System.out.println(dateTimeStr); 

का उपयोग कर दोनों मुझे एक ही परिणाम दे रहे हैं, 1965/10/13 06:09:54 की कोशिश की है की कोशिश की है।

मैं अपेक्षा करता हूं, 1965/10/13 05:26:40, इसके बजाए। मैं नीचे दिए गए इस का उपयोग करते हुए ओरेकल क्वेरी हो रही है,

select to_date('1900-JAN-1') + 2075866000/86400 from dual 

और Joda और Oracle के बीच विरोधाभास की बात है, मैं Wolframalpha की कोशिश की है, वह भी मुझे ओरेकल के रूप में एक ही परिणाम दे रहा है।

कोई भी कृपया बताएं कि यह अंतर क्यों है?

+0

'2075866000/86400',' 86400' के लिए क्या उपयोग किया जाता है? –

+1

आपका डिफ़ॉल्ट टाइमज़ोन क्या है? यदि यह भारत में है, तो 1 9 30 के दशक में कुछ अजीब समायोजन हैं जो परिणाम को प्रभावित करेंगे। –

+0

मुझे पता है कि आप मलेशिया में स्थित हैं - जिम गैरीसन ने कहा, पिछली शताब्दी में उस समय क्षेत्र में समायोजन विसंगति को समझा सकता है। यह पृष्ठ देखें: http://en.wikipedia.org/wiki/Time_in_Malaysia –

उत्तर

4

timeanddate.com के अनुसार 1901 में कुआलालंपुर में समय क्षेत्र समायोजन थे, 1905, 1933, 1941, 1942, 1945, जो के कुल योग शायद विसंगति आप देख रहे हैं बताते हैं।

संपादित करें: वास्तव में, यदि आप सभी समायोजन जोड़ते हैं तो आपको 43:14 मिलती है, जो वास्तव में आप देख रहे विसंगति है।

जोडाटाइम और जावा आपको सही संख्या दे रहे हैं।

संबंधित मुद्दे