इस प्रारूप का क्या अर्थ है T00: 00: 00.000Z?


87

क्या कोई, कृपया, जावास्क्रिप्ट में इस प्रकार के प्रारूप की व्याख्या कर सकता है

 T00:00:00.000Z

और इसे पार्स कैसे करें?



4
T"समय" का अर्थ है, और आमतौर पर दिनांक को समय घटक से अलग करता है। Zइसका मतलब यूटीसी के
मैट जॉनसन-पिंट

जवाबों:


86

यह ISO-8601 तारीख प्रतिनिधित्व का एक हिस्सा है । यह अधूरा है क्योंकि इस पैटर्न में एक पूर्ण तिथि प्रतिनिधित्व में भी तारीख शामिल होनी चाहिए:

2015-03-04T00:00:00.000Z //Complete ISO-8601 date

यदि आप इस तिथि को पार्स करने का प्रयास करते हैं तो यह है कि आपको एक Invalid Dateत्रुटि मिलेगी :

new Date('T00:00:00.000Z'); // Invalid Date

इसलिए, मुझे लगता है कि इस प्रारूप में टाइमस्टैम्प को पार्स करने का तरीका किसी भी तारीख के साथ समतल करना है

new Date('2015-03-04T00:00:00.000Z'); // Valid Date

तब आप केवल वह हिस्सा निकाल सकते हैं जिसे आप चाहते हैं (टाइमस्टैम्प हिस्सा)

var d = new Date('2015-03-04T00:00:00.000Z');
console.log(d.getUTCHours()); // Hours
console.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());

2
बंद - आप का उपयोग करना चाहिए getUTCHours, getUTCMinutesऔर getUTCSeconds। अन्यथा, आप स्थानीय समय क्षेत्र के व्यवहार को लागू कर रहे हैं, जो कि समय क्षेत्र के आधार पर अलग-अलग परिणाम देगा, और किस तारीख को आप चुनते हैं - डीएसटी के कारण।
मैट जॉनसन-पिंट

14

मेरा सुझाव है कि आप इसके लिए उपयोग moment.jsकरें। क्षण में। आप कर सकते हैं:

var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";

अब जब आपके पास एक समय के लिए सही प्रारूप है, तो इसे वैध होने पर पार्स करें:

var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.

और समय भागों को प्राप्त करने के लिए आप कुछ कर सकते हैं जैसे:

var momentDate = moment(proposedDate)
var hour = momentDate.hours();
var minutes = momentDate.minutes();
var seconds = momentDate.seconds();

// or you can use `.format`:
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z"));

Momentjs के बारे में अधिक जानकारी http://momentjs.com/


2
आपको एक उपयुक्त प्रारूप स्ट्रिंग के साथ इसे पल कंस्ट्रक्टर में सीधे पार्स करने में सक्षम होना चाहिए। (यदि यह मान का हिस्सा नहीं है तो पल वर्तमान तिथि मान लेगा।) इसके अलावा, आप विचार कर सकते हैं moment.utc(...)कि परिणामी मूल्य मूल मूल्य के समान UTC क्षेत्र में है।
मैट जॉनसन-पिंट

4

जैसा कि एक व्यक्ति ने पहले ही सुझाया होगा,

मैंने आईएसओ 8601 तारीख स्ट्रिंग को सीधे पास कर दिया जैसे कि ...

`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`

या

`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`

इन समाधानों में से कोई भी आपको एक ही परिणाम देगा।

`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`

ऊपर दिए गए कोड को स्पष्ट करते हुए स्पष्ट रूप से j.javascript लाइब्रेरी के उपयोग और लिंक करने की अनुशंसा करना भी अच्छा होगा ।
वीकेन

यह प्रश्न का उत्तर प्रदान नहीं करता है। एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी कर पाएंगे ; इसके बजाय, ऐसे उत्तर प्रदान करें जिन्हें पूछने वाले से स्पष्टीकरण की आवश्यकता न हो । - समीक्षा से
फिल ट्यून 14

@ आप सही हैं, मुझे लगता है कि मेरा दिमाग इतनी तेज़ी से आगे बढ़ रहा था कि मैं तकनीकी रूप से टिप्पणी करने के लिए जवाब दे रहा था और सवाल नहीं
that_developer

1

कृपया या किसी पैटर्न के ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME; बजाय DateTimeFormatter का उपयोग करेंDateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")

इससे मेरी समस्या ठीक हो गई

java.time.format.DateTimeParseException: पाठ '2019-12-18T19: 00: 00.000Z' सूचकांक 10 में पार्स नहीं किया जा सका


यह OffsetDateTime को स्ट्रिंग प्रकार से समय परिवर्तित साथ मेरी समस्या हल है
RSH
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.