2009-12-06 10 views
9

पर जावास्क्रिप्ट का उपयोग करें यह शायद कुछ आसान है, लेकिन मैं थोड़ा उलझन में हूं कि यह कैसे करें। मैं कैसे, जावास्क्रिप्ट का उपयोग, निम्नलिखित ISO 8601 तारीख स्ट्रिंग से केवल समय पार्स कर सकते हैं:पार्स टाइम

2009-12-06T17:10:00 

दूसरे शब्दों में, ऊपर तार के साथ, मैं करने के लिए उत्पादन करना चाहते हैं:

5:10 PM 

किसी भी मार्गदर्शन इस पर ट्यूटोरियल बहुत अच्छा होगा।

+1

मुझे लगता है कि सवाल का डुप्लिकेट के रूप में यह बंद करने के लिए मतलब नहीं था:। – Ryan

+0

'(मैं सहमत नहीं है कि इस सवाल का पता चला की एक सटीक डुप्लिकेट है पार्सिंग आईएसओ timestamps मानव इनपुट पार्स करने से एक अलग चिंता का विषय है। – Andrew

उत्तर

0

string.slice(11,16)17:10 वापस आ जाएगा। वहां से (शायद slice का उपयोग अधिक रोचक और रोमांचक शिष्टाचार में) इसे 24 घंटे के प्रारूप में प्राप्त करने के लिए काफी सरल होना चाहिए।

0

इसे आईएसओ 8601 प्रारूप कहा जाता है। Mochikit एक समारोह में यह पार्स करने के लिए के साथ आता है,

http://mochikit.com/doc/html/MochiKit/DateTime.html

आप इस प्रकार का दिनांक वस्तु प्राप्त कर सकते हैं,

timestamp = isoTimestamp("2009-12-06T17:10:00"); 

बस समारोह कॉपी यदि आप उपयोग Mochikit नहीं करना चाहती।

0

आईएसओ टाइमस्टैम्प को पार्स करना आसान है, सांस्कृतिक रूप से उचित तरीके से समय स्वरूपित करना कठिन है (5:10 अपराह्न सभी लोकेशंस के लिए उपयुक्त नहीं है) कई टूलकिट आईएसओ भाग के लिए दिनचर्या प्रदान करते हैं, और यह नई ईसीएमएस्क्रिप्ट का भी हिस्सा है 5 मानक; हालांकि, केवल एक जोड़े बाद के हिस्से को करते हैं।

आप dojo.date.stamp.fromISOString और dojo.date.locale.format आज़मा सकते हैं।

मेरा मानना ​​है कि दिनांक-जेएस समय प्रारूप भी कर सकता है।

11

क्रोम & फ़ायरफ़ॉक्स: मानक जावास्क्रिप्ट दिनांक निर्माता आईएसओ 8601 दिनांक स्ट्रिंग लेता है।

var sampleDate = new Date("2010-03-07T02:13:46Z");

रिटर्न इस तिथि वस्तु: उदाहरण के लिए: "सूर्य मार्च 07 2010 13:13:46 GMT + 1100 (ऑस्ट्रेलिया पूर्वी डेलाइट समय)"

यह IE में काम नहीं करता है (नवीनतम सहित

Date.prototype.setISO8601 = function (string) { 
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + 
     "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + 
     "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; 
    var d = string.match(new RegExp(regexp)); 

    var offset = 0; 
    var date = new Date(d[1], 0, 1); 

    if (d[3]) { date.setMonth(d[3] - 1); } 
    if (d[5]) { date.setDate(d[5]); } 
    if (d[7]) { date.setHours(d[7]); } 
    if (d[8]) { date.setMinutes(d[8]); } 
    if (d[10]) { date.setSeconds(d[10]); } 
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); } 
    if (d[14]) { 
     offset = (Number(d[16]) * 60) + Number(d[17]); 
     offset *= ((d[15] == '-') ? 1 : -1); 
    } 

    offset -= date.getTimezoneOffset(); 
    time = (Number(date) + (offset * 60 * 1000)); 
    this.setTime(Number(time)); 
} 

उपयोग::

आईई 9)

यहाँ http://delete.me.uk/2005/03/iso8601.html में पॉल Sowden द्वारा एक क्रॉस-ब्राउज़र समाधान है

var date = new Date(); 
date.setISO8601("2005-03-26T19:51:34Z"); 

यदि आप जावास्क्रिप्ट में बहुत अधिक डेटाटाइम मैनिपुलेशन करते हैं, तो मैं कुछ जेएस पुस्तकालयों को MomentJS जैसे जांचने का भी सुझाव दे सकता हूं। यह कुछ सामान्य चीजों को संभालता है जैसे दिनांक पार्सिंग, स्वरूपण और गणना दो तिथियों के बीच अंतर और कई स्थानीयकरण के लिए समर्थन है।