2012-03-06 14 views
6

क्या एक विशिष्ट टाइमज़ोन से जावास्क्रिप्ट में यूनिक्स टाइमस्टैंप प्राप्त करने का कोई आसान तरीका है? उदाहरण के लिए, मैं चाहता हूं कि क्लाइंट मुझे एक यूनिक्स टाइमस्टैंप भेजें लेकिन मैं इसे अपने टाइमज़ोन से मेल खाना चाहता हूं।विशिष्ट टाइमज़ोन से वर्तमान टाइमस्टैम्प प्राप्त करें

धन्यवाद!

उत्तर

5

क्यों यूटीसी में तारीख नहीं भेजते हैं, और फिर सर्वर पर अपने टाइमज़ोन में कनवर्ट करते हैं?

var utcEpochSeconds = dateObj.getTime() + (dateObj.getTimezoneOffset() * 60000); 
+0

स्थानीय मशीन के बाद से सबसे अच्छा समाधान सर्वर के टाइमज़ोन ऑफसेट को जरूरी नहीं जानता है। अभी भी काम नहीं कर सकता है क्यों 'dateObj.getUTCTime()' विधि नहीं है। – RobG

+0

यूटीसी हमेशा एक ही है, कोई फर्क नहीं पड़ता कि क्या? (मैं टाइमज़ोन सामान पर चूसता हूं) – Tobias

+1

हां, जब तक कि आपकी घड़ी गलत कॉन्फ़िगर नहीं की जाती है, या आप सापेक्ष गति पर यात्रा कर रहे हैं: http://en.wikipedia.org/wiki/Coordinated_Universal_Time – tjdett

0

यूटीसी टाइमस्टैंप प्राप्त करने के लिए toISOString का उपयोग करें।

var date = new Date(); 
date.toISOString(); // EST would be 6 hour diff from GMT 
+0

'toISOString()' ES5 है और अभी तक उपयोग में वेब ब्राउज़र के अच्छे प्रतिशत द्वारा समर्थित नहीं है। यद्यपि इसकी कमी के लिए अनुकरण करना मुश्किल नहीं है। – RobG

+0

क्या यह पुराना आईई नहीं है जो इसका समर्थन नहीं करता है? : पी किसी भी तरह से, एक शिम बनाएँ। – Trevor

1

क्रम ऐसा करने के लिए, आप समय क्षेत्र समय पर भरपाई लागू करने की आवश्यकता है, और फिर हटाने में मूल्य से अपने ऑफसेट (परीक्षण इस, मैं स्मृति से अनुमान लगा रहा हूँ):

var now = new Date(), 
    offset = -(now.getTimezoneOffset() * 60 * 1000), // now in milliseconds 
    userUnixStamp = +now + offset; 

अब अपने आप से ऑफसेट करें:

var now = new Date(), 
    offset = now.getTimezoneOffset() * 60 * 1000, 
    yourUnixStamp = userUnixStamp - offset; 
+0

क्या आप इसे उस उदाहरण में लपेट सकते हैं जहां क्लाइंट कोई फर्क नहीं पड़ता कि लॉस एंजिल्स के लिए एक ही टाइमस्टैम्प क्या देता है? क्योंकि मैं अभी इसके आस-पास अपने दिमाग को लपेट नहीं सकता ... मैं अलग-अलग परिणाम प्राप्त करता रहता हूं। * brainmelt – Tobias

+0

क्या आप स्थिति को थोड़ा और समझा सकते हैं? तारीख कहां से आ रही है? आप इसे कैसे प्राप्त कर रहे हैं? – Eli

+0

मुझे सर्वर के एक ही समय में किसी भी टाइमज़ोन क्लाइंट को रखने की आवश्यकता है - मैंने पहले ही इसे आसान बनाने के लिए सर्वर समय को यूटीसी पर सेट कर दिया है - अब मैंने इसके साथ यूटीसी समय उत्पन्न करने की कोशिश की: var d = new date(); var utc = Math.round (d.getTime() + (d.getTimezoneOffset() * 60000)/1000); लेकिन यह हमेशा एक माइक्रोटाइम लौटाता है (क्यों ?! एक/1000 है) टाइमस्टैम्प जो 8 घंटे आगे है ... – Tobias