2013-08-26 5 views
13

के साथ एक विशिष्ट समय क्षेत्र में समय कैसे बनाएं मेरे पास यह बैकएंड है जो मुझे एक निर्धारित समय क्षेत्र में एक पूर्व स्वरूपित समय भेजता है, लेकिन कहा गया समय क्षेत्र के लिए किसी भी जानकारी के बिना। तार इस तरह हैं: "2013-08-26 16:55:00"।पल.जेएस

मैं इस तार के साथ एक नया moment.js उदाहरण बना सकते हैं:

var time = moment("2013-08-26 16:55:00") //this creates time in my tz 

लेकिन यह केवल अपने खुद के समय क्षेत्र में एक उदाहरण का निर्माण करेगा।

Moment.js में एक प्लगइन है जो विशिष्ट समय क्षेत्रों में ऑब्जेक्ट के उदाहरण बना सकता है और यह बहुत अच्छा काम करता है, लेकिन मैं यह नहीं कह सकता कि मैं ऑब्जेक्ट को किस समय इंगित करना चाहता हूं।

अगर मैं न्यूयॉर्क में हूँ और मैं यह कर:

var time = moment("2013-08-26 16:55:00").tz("America/Los_Angeles"); 

जिसके परिणामस्वरूप समय 13:55 के बजाय 16:55 लेकिन ला में हो जाएगा।

जो मैं चाहता हूं वह एक उदाहरण बनाना है जो 16:55 कहेंगे, लेकिन एलए समय में।

कारण मैं पूछ रहा हूँ है, क्योंकि मैं ऐसा करना चाहते हैं:

var now = moment.tz("America/Los_Angeles"); 
var end = moment("2013-08-26 16:55:00"); //plus something to convert LA time 

var timeLeft = end.diff(now, "minutes"); 

वहाँ ऐसा करने के लिए कोई तरीका है?

उत्तर

19

ज्यादातर मामलों में, आप बस यह कर सकते हैं:

:

moment.tz("2013-08-26 16:55:00", "America/Los_Angeles") 

आप ISO8601 के अलावा अन्य इनपुट की आवश्यकता है, तो दूसरा पैरामीटर के रूप में प्रारूप स्ट्रिंग, और तीसरे के रूप में समय क्षेत्र दर्शा

moment.tz("8/26/2013 4:55 pm", "M/D/YYYY h:mm a", "America/Los_Angeles") 

और तुम पल की "सख्त पद व्याख्या" मोड का उपयोग करने की आवश्यकता है, तो है कि तीसरे पैरामीटर में चला जाता है, और समय क्षेत्र चौथे स्थान पर ले जाता है:

moment.tz("8/26/2013 4:55 pm", "M/D/YYYY h:mm a", true, "America/Los_Angeles") 
+0

मैं इसे कैसे करते हो, एक विशिष्ट प्रारूप और एक सख्त पार्स के रूप में अच्छी तरह से इस्तेमाल करने की जरूरत है? – Jan

+0

@Jan - व्याख्या करने के लिए उत्तर अपडेट किया गया। धन्यवाद। –

+0

@MattJohnson यह काम 'अमेरिका/न्यू_यॉर्क' के लिए पूर्व के लिए कैसे कहता है? ऐसा लगता है कि यह ब्राउज़र के टाइमज़ोन को कैप्चर करता है – anm

1

आप

एक का उपयोग कर सामान्य समय क्षेत्र) moment.tz.setDefault("America/Los_Angeles");

अपने प्रयोग के मामले के लिए (एक Node.js परियोजना में स्थापित करने के लिए) मैं सिर्फ सेट चाहते हैं आप एक विशिष्ट समय क्षेत्र में सब कुछ की गणना करना चाहते हैं

let moment = require('moment'); 
require('moment-timezone'); 
moment.tz.setDefault("America/Los_Angeles"); 

moment() के लिए सभी कॉल उसके बाद "America/Los_Angeles" सेटिंग है, जो का उपयोग कर के रूप में ही नहीं है में समय पैदा करेगा: यह सही तो जैसे पल मॉड्यूल की आवश्यकता होती है के बाद

बी) moment.tz("2017-03-04 00:00", "America/Los_Angeles")

या

सी) moment("2017-03-04 00:00").tz("America/Los_Angeles")

जो दोनों के() UTC समय में पल वस्तु बनाने होगा जब तक आप पहले से ही डिफ़ॉल्ट बदल गया है, और फिर इसे होने के लिए परिवर्तित लॉस एंजिल्स टाइमज़ोन।

ब्राउज़र कंसोल पैदावार में ऊपर बी या सी चल रहा है:

_d: Fri Mar 03 2017 16:00:00 GMT-0800 (PST) 
_i: "2017-3-4 00:00" 

सूचना _D 3 मार्च 4:00 बजे पता चलता है; ऐसा इसलिए है क्योंकि पल ऑब्जेक्ट को यूटीसी समय में 4 मार्च 12:00 बजे के साथ बनाया गया है, फिर प्रशांत टाइमज़ोन में परिवर्तित किया गया है, जो पिछले दिन 8 घंटे पीछे/पीछे है।

स्रोत: http://momentjs.com/timezone/docs/#/using-timezones/default-timezone/