2013-01-11 3 views
8
DateTime start = new DateTime().withYear(1884); 
System.out.println(start); 
System.out.println(start.minusYears(1)); 

आउटपुटक्यों 1884 से कम वर्ष है, यह कुछ मिलीसेकंड हटा देता है?

1884-01-11T08:26:10.234-08:00 
1883-01-11T08:26:10.234-07:52:58 

संपादित करें 1: मैं सही नहीं था। इसे हटा दिया नहीं किया 1.02 सेकंड

DateTime start = new DateTime().withYear(1884); 
DateTime other = start.minusYears(1); 
long diffMs = start.getMillis() - other.getMillis(); //31536422000 

संपादित करें 2:

दिलचस्प है, मैं उत्पादन से toString(); के लिए उलझन में था - (-08:00, -07:52:58)

संपादित करें 3:

जावा कैलेंडर के साथ , मुझे कोई अंतर नहीं दिख रहा है:

Calendar cal = Calendar.getInstance(); 
cal.set(start.getYear(), 
     start.getMonthOfYear(), 
     start.getDayOfMonth(), 
     start.getHourOfDay(), 
     start.getMinuteOfHour(), 
     start.getSecondOfDay()); 
System.out.println(cal.getTime()); 

cal = Calendar.getInstance(); 
cal.set(start.getYear()- 1, 
     start.getMonthOfYear(), 
     start.getDayOfMonth(), 
     start.getHourOfDay(), 
     start.getMinuteOfHour(), 
     start.getSecondOfDay()); 
System.out.println(cal.getTime()); 

आउटपुट:

Mon Feb 11 18:46:42 PST 1884 
Sun Feb 11 18:46:42 PST 1883 
+0

आश्चर्य अगर यह [इस एक] (http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times के लिए इसी तरह का एक मुद्दा है -इन -1927-देने-अजीब परिणाम/6841479 # 6841479) –

+0

@ माइक क्रिस्टेनसेन जैसा दिखता है, लेकिन मेरा संपादन देखें, अब मैं वास्तव में उलझन में हूं। मैं सोच रहा हूं कि टूस्ट्रिंग का अंतिम भाग क्यों है .. – JohnJohnGa

+0

अंतिम भाग यूटीसी का ऑफसेट है (इस्तेमाल किए गए समय क्षेत्र पर निर्भर करता है) आपका स्थान 11 जनवरी 1884 को यूटीसी के पीछे 8 घंटे था, लेकिन केवल 7 घंटे, 52 मिनट, समय क्षेत्र के मानकीकृत होने से पहले 58 सेकंड पीछे। –

उत्तर

10

this time zone history page से;

महाद्वीपीय संयुक्त राज्य अमेरिका के लिए चार मानक समय क्षेत्रों 18 नवंबर, 1883 ब्रिटेन, जो पहले से ही इंग्लैंड, स्कॉटलैंड और वेल्स के लिए अपने स्वयं के मानक समय प्रणाली को अपनाया पर शुरू किए गए थे, में वैश्विक समय क्षेत्रों के लिए अंतरराष्ट्रीय आम सहमति इकट्ठा मदद की 1884.

दूसरे शब्दों में, यूएस समय क्षेत्र उन दो टाइमस्टैम्प के बीच बदल गया।

संपादित करें: यदि आपके पास समय क्षेत्र पीएसटी (समय क्षेत्र) पर सेट है, तो आप इस प्रभाव को नहीं देख पाएंगे, जबकि यदि आपने इसे किसी स्थान पर सेट किया है (उदाहरण के लिए अमेरिका/लॉस_एंजेलस), तो आप करेंगे। यह के कारण पीएसटी का समय क्षेत्र ऑफ़सेट नहीं बदला गया, इसके बजाय पीएसटी बनाया गया था और लॉस एंजिल्स एलएमटी से पीएसटी में बदल गया) यानी, लॉस एंजिल्स का समय बदल गया, जबकि पीएसटी नहीं था।

डेमो के रूप में, आप इसे लिनक्स पर आज़मा सकते हैं;

# PST test 
$ TZ=PST8PDT date -d '1883-01-01 12:00:00 UTC' 
Mon Jan 1 04:00:00 PST 1883 

# America/Los_Angeles test 
$ TZ=America/Los_Angeles date -d '1883-01-01 12:00:00 UTC' 
Mon Jan 1 04:07:02 LMT 1883 
+0

मुझे एहसास हुआ कि यह ऐसा कुछ था ... –

+2

Ah StackOverflow। भाग कोडिंग सबक, भाग इतिहास सबक .. –

+2

दिलचस्प, मैं इसे सी # के साथ पुन: पेश नहीं कर सकता, क्या कोई यह बता सकता है कि कौन सी भाषाओं ने 7,02 एस "फिक्स" लागू किया है? – torm

1

इस वर्ष के दौरान अमेरिका द्वारा मानक समय अपनाया गया है।

1883: अमेरिकी और कनाडाई रेलवे करने के लिए पाँच मानकीकृत समय क्षेत्रों को अपनाने महाद्वीप में समुदायों में स्थानीय बार की बहुलता की जगह। हर कोई जल्द ही "रेलरोड समय" पर काम करेगा।

Source

Wikipedia page about Standard Time

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