दिलचस्प पोस्ट
PHP कर्ल, एक XML प्रतिक्रिया निकालने ES6 आयात स्टेटमेंट में घुंघराले ब्रेसेस का उपयोग क्या है क्या आपको हमेशा जावा में इंटरफेस करने के लिए कोड चाहिए? सी # बनाएँ / संशोधित करें / .xlsx फ़ाइलें पढ़ें मेटा टैग के साथ ताज़ा करने पर इनपुट मान को याद करने से फ़ायरफ़ॉक्स को रोकना XPATHS और डिफ़ॉल्ट नेमस्पेस प्रत्येक समूह के भीतर एक अल्पविराम से अलग स्ट्रिंग को कॉलम संकलित / एकत्रित करें / समस्त करें कैसे स्कैन करने के लिए केवल पूर्णांक और दोहराने पढ़ने अगर उपयोगकर्ता संख्यात्मक अक्षर दर्ज करते हैं? क्या मुझे अपवाद या ApplicationException से कस्टम अपवाद को .NET में प्राप्त करना चाहिए? पीडीएफ रिपोर्ट पीएचपी से जनरेट करें JSON.stringify () IE 8 द्वारा समर्थित है? यूटीएफ -8 को एक सीएसवी फ़ाइल में कैसे लिखें एक सूची में एक नंबर ढूँढना लोड होने पर किसी खास स्थिति में एचटीएमएलएक्स वीडियो शुरू करें? मैं वास्तव में कभी नहीं समझा: POSIX क्या है?

जावास्क्रिप्ट में मैं एक आईएसओ 8601 फॉर्मैट स्ट्रिंग कैसे आउटपुट करूँ?

मेरे पास एक Date वस्तु है मैं निम्नलिखित स्निपेट का title भाग कैसे प्रदान करूं?

 <abbr title="2010-04-02T14:12:07">A couple days ago</abbr> 

मेरे पास दूसरे शब्दों से "शब्दों में सापेक्ष समय" का हिस्सा है।

मैंने निम्नलिखित की कोशिश की है:

 function isoDate(msSinceEpoch) { var d = new Date(msSinceEpoch); return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' + d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds(); } 

लेकिन वह मुझे देता है:

 "2010-4-2T3:19" 

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में मैं एक आईएसओ 8601 फॉर्मैट स्ट्रिंग कैसे आउटपुट करूँ?"

पहले से ही एक समारोह है जिसे toISOString() कहा जाता है:

 var date = new Date(); date.toISOString(); //"2011-12-19T15:28:46.493Z" 

अगर, किसी भी तरह, आप एक ऐसे ब्राउज़र पर हैं जो इसका समर्थन नहीं करता है, मैंने आपको कवर किया है:

 if ( !Date.prototype.toISOString ) { ( function() { function pad(number) { var r = String(number); if ( r.length === 1 ) { r = '0' + r; } return r; } Date.prototype.toISOString = function() { return this.getUTCFullYear() + '-' + pad( this.getUTCMonth() + 1 ) + '-' + pad( this.getUTCDate() ) + 'T' + pad( this.getUTCHours() ) + ':' + pad( this.getUTCMinutes() ) + ':' + pad( this.getUTCSeconds() ) + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 ) + 'Z'; }; }() ); } 

पृष्ठ पर अंतिम उदाहरण देखें https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :

 /* Use a function for the exact format desired... */ function ISODateString(d) { function pad(n) {return n<10 ? '0'+n : n} return d.getUTCFullYear()+'-' + pad(d.getUTCMonth()+1)+'-' + pad(d.getUTCDate())+'T' + pad(d.getUTCHours())+':' + pad(d.getUTCMinutes())+':' + pad(d.getUTCSeconds())+'Z' } var d = new Date(); console.log(ISODateString(d)); // Prints something like 2009-09-28T19:03:12Z 

वेब पर लगभग हर टू-आईएसओ पद्धति स्ट्रिंग को आउटपुट करने से पहले "जेड" ल्यू टाइम (यूटीसी) में कनवर्ट करने के लिए टाइमज़ोन जानकारी को छोड़ देती है। ब्राउज़र का मूल .toOString () भी समय क्षेत्र की जानकारी को छोड़ देता है

यह बहुमूल्य जानकारी को सर्वर, या प्राप्तकर्ता के रूप में छोड़ देता है, वह पूरी तरह से आईएसओ तारीख को ज़ुलु समय में परिवर्तित कर सकता है या फिर उस समय के समय के लिए आवश्यक हो सकता है, जबकि प्रेषक की समय-समय पर जानकारी भी मिलती है।

मैं सबसे अच्छा समाधान आया हूँ Moment.js जावास्क्रिप्ट लाइब्रेरी का उपयोग करने के लिए और निम्न कोड का उपयोग करें:

समय क्षेत्र सूचना और मिलीसेकंड के साथ वर्तमान आईएसओ समय प्राप्त करने के लिए

 now = moment().format("YYYY-MM-DDTHH:mm:ss.SSSZZ") // "2013-03-08T20:11:11.234+0100" now = moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSSZZ") // "2013-03-08T19:11:11.234+0000" now = moment().utc().format("YYYY-MM-DDTHH:mm:ss") + "Z" // "2013-03-08T19:11:11Z" <- better use the native .toISOString() 

समयजायन की सूचना के साथ एक मूल जावास्क्रिप्ट दिनांक ऑब्जेक्ट के आईएसओ समय प्राप्त करने के लिए, लेकिन मिलीसेकंड के बिना

 var current_time = Date.now(); moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ") 

इसे Date.js के साथ जोड़ा जा सकता है, जैसे दिनांक दिनांक () जैसे कार्यों को प्राप्त करने के लिए, जिसके परिणामस्वरूप क्षण को पार किया जा सकता है।

इस तरह की तारीख स्ट्रिंग फ़ॉर्मेट की जाती है जो एक JSON compilant है, और एक डेटाबेस में संग्रहीत करने के लिए स्वयं अच्छी तरह से उधार देती है। पायथन और सी # इसे पसंद करने लगते हैं

सवाल पूछा था कम परिशुद्धता के साथ आईएसओ प्रारूप। देखा:

  new Date().toISOString().slice(0, 19) + 'Z' // '2014-10-23T13:18:06Z' 

अनुक्रमित Z मान लेना चाहिए है, अन्यथा सिर्फ छोड़ देना चाहिए।

यदि आपको आईई 7 का समर्थन करने की ज़रूरत नहीं है, तो निम्नलिखित एक महान, संक्षिप्त हैक है:

 JSON.parse(JSON.stringify(new Date())) 

सबसे छोटा, लेकिन इंटरनेट एक्सप्लोरर 8 और इससे पहले समर्थित नहीं:

 new Date().toJSON() 

'टी' के बाद एक '+' लापता है

 isoDate: function(msSinceEpoch) { var d = new Date(msSinceEpoch); return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' + d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds(); } 

इसे करना चाहिए

अग्रणी शून्य के लिए आप यहां इसका उपयोग कर सकते हैं :

 function PadDigits(n, totalDigits) { n = n.toString(); var pd = ''; if (totalDigits > n.length) { for (i=0; i < (totalDigits-n.length); i++) { pd += '0'; } } return pd + n.toString(); } 

इसे इस तरह प्रयोग करना:

 PadDigits(d.getUTCHours(),2) 

मैं आमतौर पर यूटीसी दिनांक प्रदर्शित नहीं करना चाहता क्योंकि ग्राहकों को उनके सिर में रूपांतरण करना पसंद नहीं है। स्थानीय आईएसओ तारीख को प्रदर्शित करने के लिए, मैं फ़ंक्शन का उपयोग करता हूं:

 function toLocalIsoString(date, includeSeconds) { function pad(n) { return n < 10 ? '0' + n : n } var localIsoString = date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate()) + 'T' + pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds()); if(date.getTimezoneOffset() == 0) localIsoString += 'Z'; return localIsoString; }; 

उपर्युक्त समारोह समय क्षेत्र ऑफसेट जानकारी को छोड़कर (अगर स्थानीय समय यूटीसी होता है), तो मैं एक स्थान में स्थानीय ऑफ़सेट दिखाने के लिए नीचे का फ़ंक्शन का उपयोग करता हूं। यदि आप प्रत्येक समय में ऑफ़सेट दिखाना चाहते हैं, तो आप उपर्युक्त कार्य के परिणामों में इसके उत्पादन को जोड़ सकते हैं:

 function getOffsetFromUTC() { var offset = new Date().getTimezoneOffset(); return ((offset < 0 ? '+' : '-') + pad(Math.abs(offset / 60), 2) + pad(Math.abs(offset % 60), 2)) }; 

toLocalIsoString pad का उपयोग करता है यदि आवश्यक हो, तो यह लगभग किसी भी पैड फ़ंक्शन की तरह काम करता है, लेकिन पूर्णता की खातिर मैं यही उपयोग करता हूं:

 // Pad a number to length using padChar function pad(number, length, padChar) { if (typeof length === 'undefined') length = 2; if (typeof padChar === 'undefined') padChar = '0'; var str = "" + number; while (str.length < length) { str = padChar + str; } return str; } 

ToISOString के साथ समस्या यह है कि यह केवल "Z" के रूप में दिनांक समय देता है

आईएसओ -8601 भी समय-समय के अंतर के साथ घंटे और मिनट में दिन-समय के साथ परिभाषित करता है, 2016-07-16 टी 1 9: 20: 30 + 5: 30 (जब समयक्षेत्र आगे UTC है) और 2016-07-16 टी 1 9: 20: 30-01 : 00 (जब समयक्षेत्र यूटीसी के पीछे होता है)।

मुझे नहीं लगता कि यह एक अच्छा विचार है कि एक और प्लगइन का उपयोग करें, ऐसे छोटे कार्य के लिए moment.js, खासकर जब आप इसे कोड की कुछ लाइनों से प्राप्त कर सकते हैं

 var timezone_offset_min = new Date().getTimezoneOffset(), offset_hrs = parseInt(Math.abs(timezone_offset_min/60)), offset_min = Math.abs(timezone_offset_min%60), timezone_standard; if(offset_hrs < 10) offset_hrs = '0' + offset_hrs; if(offset_min > 10) offset_min = '0' + offset_min; // getTimezoneOffset returns an offset which is positive if the local timezone is behind UTC and vice-versa. // So add an opposite sign to the offset // If offset is 0, it means timezone is UTC if(timezone_offset_min < 0) timezone_standard = '+' + offset_hrs + ':' + offset_min; else if(timezone_offset_min > 0) timezone_standard = '-' + offset_hrs + ':' + offset_min; else if(timezone_offset_min == 0) timezone_standard = 'Z'; // Timezone difference in hours and minutes // String such as +5:30 or -6:00 or Z console.log(timezone_standard); 

एक बार जब आप घंटे और मिनट में ऑफसेट टाइमज़न प्राप्त करते हैं, तो आप एक डेटलाइन स्ट्रिंग में जोड़ सकते हैं।

मैंने इस पर एक ब्लॉग पोस्ट लिखा था: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes

मैं सिर्फ इस छोटे से विस्तार को Date लिए उपयोग करूंगा – http://blog.stevenlevithan.com/archives/date-time-format

 var date = new Date(msSinceEpoch); date.format("isoDateTime"); // 2007-06-09T17:46:21 

मैं बहुत कम कोड के साथ आउटपुट प्राप्त करने में सक्षम था

 var ps = new Date('2010-04-02T14:12:07') ; ps = ps.toDateString() + " " + ps.getHours() + ":"+ ps.getMinutes() + " hrs"; 

आउटपुट:

 Fri Apr 02 2010 19:42 hrs 
 function timeStr(d) { return ''+ d.getFullYear()+ ('0'+(d.getMonth()+1)).slice(-2)+ ('0'+d.getDate()).slice(-2)+ ('0'+d.getHours()).slice(-2)+ ('0'+d.getMinutes()).slice(-2)+ ('0'+d.getSeconds()).slice(-2); } 
 function getdatetime() { d = new Date(); return (1e3-~d.getUTCMonth()*10+d.toUTCString()+1e3+d/1) .replace(/1(..)..*?(\d+)\D+(\d+).(\S+).*(...)/,'$3-$1-$2T$4.$5Z') .replace(/-(\d)T/,'-0$1T'); } 

मुझे स्टैक ओवरफ्लो पर मूल बातें कहीं मिलीं (मेरा मानना ​​है कि यह कुछ अन्य स्टैक एक्सचेंज कोड गोल्फ़िंग का हिस्सा था), और मैंने इसे सुधार लिया है, इसलिए यह इंटरनेट एक्सप्लोरर 10 या उससे पहले के साथ ही काम करता है। यह बदसूरत है, लेकिन यह काम किया जाता है।