2012-10-03 16 views
5

मैंने टाइमज़ोन और जावास्क्रिप्ट Date ऑब्जेक्ट के साथ अजीब कुछ देखा।क्या जावास्क्रिप्ट 'दिनांक' ऑब्जेक्ट में 21 अक्टूबर 2012 का प्रतिनिधित्व करने का कोई तरीका है?

एक लिनक्स बॉक्स पर इस कोशिश कर रहा है:

$ TZ='America/Sao_Paulo' js 
js> new Date(2012, 9, 21, 0, 0, 0).toString() 
"Sat Oct 20 2012 23:00:00 GMT-0300 (BRST)" 

मैं यह असंभव एक वस्तु है कि अक्टूबर 2012 हर एक उस दिन Date 00:00 01:00 के बीच और प्राप्त करने के लिए attemps के 21 का प्रतिनिधित्व करता है पाने के लिए मिल गया 11:00 अपराह्न और 00:00 के बीच पहले दिन की तारीख में परिणाम।

वापस एक ही तिथि प्राप्त करने में इस तरह के एक तारीख वस्तु परिणाम के लिए

एक घंटे (या एक दिन) जोड़ना (Windows उपयोगकर्ता एक ही व्यवहार का अनुभव करने के लिए ब्रासीलिया/GMT-03 के लिए अपने समय क्षेत्र बदल सकते हैं)।

मुझे लगता है कि इसे ब्राजील में उस विशिष्ट तारीख पर होने वाली डेलाइट सेविंग टाइम के साथ करना है, हालांकि मुझे बिल्कुल पता नहीं है कि इससे कैसे निपटना है।

मैं एक पाश है कि महीने के दिनों में दोहराता (एक कैलेंडर आवेदन के लिए) और यह स्पष्ट रूप से उस मामले में हमेशा के लिए लूप जब अक्टूबर के 20 वीं तक पहुंच गया है 2012

वहाँ कुछ होना चाहिए मैं कर रहा हूँ गलत है, लेकिन मुझे नहीं पता कि इस तरह के मामले से निपटने के लिए, जैसा कि मुझे लगता है कि यह अन्य टाइमज़ोन के लिए भी हो सकता है।

जावास्क्रिप्ट में Date से निपटने का अनुशंसित तरीका क्या है यह सुनिश्चित करने के लिए कि इस टाइमज़ोन/डेलाइट सेविंग टाइम से संबंधित समस्याएं नहीं होती हैं?

उत्तर

0

यह एक बिल्कुल सही व्यवहार है। डीएसटी मध्यरात्रि के कारण 21 अक्टूबर को ब्राजील में स्थानीय समय में बस अस्तित्व में नहीं है। यदि आपको केवल कैलेंडर बनाने की आवश्यकता है तो आप new Date(2012, 9, 21, 0, 0, 0).toString() और अन्य UTC methods के बजाय new Date(2012, 9, 21, 0, 0, 0).toUTCString() का उपयोग कर सकते हैं।

उदाहरण के लिए यूटीसी तिथि बनाने के लिए आप new Date(Date.UTC(2012, 9, 21, 0, 0, 0)); का उपयोग कर सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। हालांकि मेरी समस्या को तारीख की स्ट्रिंग प्रस्तुति नहीं मिल रही है, लेकिन एक वैध वस्तु प्राप्त करने वाला एक वैल्यू ऑब्जेक्ट प्राप्त करना। – ereOn

+1

फिर यूटीसी विधि का उपयोग करें: 'नई तिथि (दिनांक .UTC (2012, 9, 21, 0, 0, 0)); ' – bjornd

+0

यह वास्तव में बेहतर काम करता है। क्या आप अपना उत्तर संपादित कर सकते हैं ताकि यह स्पष्ट हो सके कि वास्तविक समाधान क्या है? मुझे इसे स्वीकार करने में खुशी होगी :) – ereOn

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

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