मेरे आवेदन का परीक्षण करते समय मुझे एक अजीब समस्या मिली। जब मैंने 1 9 45 से पहले साल की तारीख तय की, तो यह टाइमज़ोन बदलता है।जावा डेट टाइमज़ोन विभिन्न वर्षों के लिए अलग-अलग टाइमज़ोन प्रिंटिंग, वर्कअराउंड की आवश्यकता
मुझे समस्या दिखाने के लिए यह सरल कार्यक्रम मिला है।
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
Calendar calendar = Calendar.getInstance();
System.out.println("**********Before 1945");
calendar.set(1943, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
System.out.println("**********After 1945");
calendar.set(1946, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
}
उत्पादन मैं हो रही है नीचे है: -
**********Before 1945
1943-04-12 05:34:12+0630
Mon Apr 12 05:34:12 IDT 1943
**********After 1945
1946-04-12 05:34:12+0530
Fri Apr 12 05:34:12 IST 1946
पहले एक के लिए, मैं यह +0630
और IDT
के रूप में हो रही है, जबकि दूसरे के लिए, मैं +0530
और IST
हो रही है जो अपेक्षित है।
संपादित करें: -
@Elliott Frisch जवाब को देखने के बाद मैं 1942 से पहले एक तारीख की कोशिश की: -
calendar.set(1915, Calendar.APRIL, 12, 5, 34, 12);
System.out.println(format.format(calendar.getTime()));
System.out.println(calendar.getTime());
उत्पादन: -
1915-04-12 05:34:12+0553
Mon Apr 12 05:34:12 IST 1915
यहां भी यह कहते हैं IST
लेकिन दिखाता है +0553
। यह +0530
नहीं होना चाहिए।
, मैं जावास्क्रिप्ट में एक ही बात करने की कोशिश की: -
new Date("1946-04-12 05:34:12") //prints Fri Apr 12 1946 05:34:12 GMT+0530 (IST)
new Date("1943-04-12 05:34:12") //prints Fri Apr 12 1943 05:34:12 GMT+0530 (IST)
new Date("1915-04-12 05:34:12") //prints Mon Apr 12 1915 05:34:12 GMT+0530 (IST)
कौन सा ठीक काम करता है। मैं जानना चाहता हूं कि जावा इससे क्यों प्रभावित होता है, और यदि यह ज्ञात समस्या है, तो के लिए संभावित कार्यवाही क्या है।
अग्रिम धन्यवाद।
ईसीएमएस्क्रिप्ट 2016 से पहले, जावास्क्रिप्ट कार्यान्वयन से वर्तमान डेलाइट सेविंग नियमों को लागू करने की उम्मीद की गई थी जैसे कि उन्होंने हमेशा लागू किया था (यानी उन्होंने डेलाइट सेविंग स्टार्ट में ऐतिहासिक परिवर्तन लागू नहीं किए थे और विभिन्न भौगोलिक क्षेत्रों में विभिन्न अधिकार क्षेत्र द्वारा परिभाषित दिनांकों को रोक दिया था) देखें [* ES5 §15.9.1.8 *] (http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.8))। जबकि यह [* अब अनुशंसित *] है (http://ecma-international.org/ecma-262/7.0/index.html#sec-daylight-saving-time- समायोजन) IANA समय क्षेत्र डेटाबेस का उपयोग करने के लिए, कार्यान्वयन हैं (और शायद नहीं) की आवश्यकता नहीं है। – RobG