javascript - जावास्क्रिप्ट में किसी दिनांक को स्वरूपित करने पर मुझे दस्तावेज़ कहां मिल सकता है?




datetime date (25)

जावास्क्रिप्ट में तिथियों से निपटने के दौरान सुनिश्चित करें कि आप Datejs चेकआउट करते हैं। यह काफी प्रभावशाली और अच्छी तरह से प्रलेखित है जैसा कि आप toString फ़ंक्शन के मामले में देख सकते हैं।

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

मैंने देखा कि जावास्क्रिप्ट की new Date() फ़ंक्शन कई प्रारूपों में तारीखों को स्वीकार करने में बहुत स्मार्ट है।

Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

new Date() फ़ंक्शन को कॉल करते समय मुझे सभी मान्य स्ट्रिंग स्वरूपों को कहीं भी दस्तावेज नहीं मिला।

यह एक स्ट्रिंग को एक तारीख में परिवर्तित करने के लिए है। यदि हम विपरीत पक्ष को देखते हैं, यानी, एक दिनांक ऑब्जेक्ट को एक स्ट्रिंग में परिवर्तित कर रहा है, तब तक मैं इस धारणा के तहत था कि जावास्क्रिप्ट में एक स्ट्रिंग में डेट ऑब्जेक्ट को प्रारूपित करने के लिए अंतर्निहित API नहीं है।

संपादक का नोट: निम्नलिखित दृष्टिकोण पूछताछ करने का प्रयास है जो किसी विशेष ब्राउज़र पर काम करता है लेकिन सामान्य रूप से काम नहीं करता है; कुछ वास्तविक समाधान देखने के लिए इस पृष्ठ पर उत्तरों देखें।

आज, मैंने डेट ऑब्जेक्ट पर toString() विधि के साथ खेला और आश्चर्यजनक रूप से यह स्ट्रिंग्स को स्वरूपण की तारीख के उद्देश्य से कार्य करता है।

var d1 = new Date();
d1.toString('yyyy-MM-dd');       //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy')  //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

यहां तक ​​कि मैं किसी भी दस्तावेज़ीकरण को उन सभी तरीकों से नहीं ढूंढ पाया जिन्हें हम दिनांक वस्तु को स्ट्रिंग में प्रारूपित कर सकते हैं।

दस्तावेज कहां है जो Date() ऑब्जेक्ट द्वारा समर्थित स्वरूप विनिर्देशों को सूचीबद्ध करता है?


यदि आप पहले से ही अपने प्रोजेक्ट में jQuery UI का उपयोग कर रहे हैं, तो आप अपनी डेट ऑब्जेक्ट को स्वरूपित करने के लिए अंतर्निहित डेटपिकर विधि का उपयोग कर सकते हैं:

$.datepicker.formatDate('yy-mm-dd', new Date(2007, 1 - 1, 26));

हालांकि, डेटपिकर केवल प्रारूपों को प्रारूपित करता है, और समय प्रारूपित नहीं कर सकता है।

JQuery यूआई डेटपिकर प्रारूपडेट , उदाहरणों पर एक नज़र डालें।


The correct way to format a date to return "2012-12-29" is with the script from JavaScript Date Format :

var d1 = new Date();
return d1.format("dd-m-yy");

This code does NOT work:

var d1 = new Date();
d1.toString('yyyy-MM-dd');      

संक्षिप्त उत्तर

जावास्क्रिप्ट को पूरा करने वाला कोई "सार्वभौमिक" दस्तावेज नहीं है; प्रत्येक ब्राउज़र जिसमें जावास्क्रिप्ट है वास्तव में एक कार्यान्वयन है। हालांकि, एक मानक है कि अधिकांश आधुनिक ब्राउज़र का पालन करना पड़ता है, और यह ईएमसीएस्क्रिप्ट मानक है; ईसीएमएस्क्रिप्ट मानक तार आईएसओ 8601 परिभाषा के संशोधित कार्यान्वयन को कम से कम ले जाएगा।

इसके अलावा, IETF द्वारा एक दूसरा मानक सेट आगे है जो ब्राउज़र भी अनुसरण करता है, जो आरएफसी 2822 में किए गए टाइमस्टैम्प की परिभाषा है। वास्तविक दस्तावेज नीचे संदर्भ सूची में पाया जा सकता है।

इससे आप बुनियादी कार्यक्षमता की उम्मीद कर सकते हैं, लेकिन "क्या" होना चाहिए स्वाभाविक रूप से "क्या" नहीं है। मैं इस प्रक्रियात्मक रूप से गहराई से जाने जा रहा हूं, हालांकि ऐसा लगता है कि केवल तीन लोगों ने वास्तव में प्रश्न (स्कॉट, गूफबॉल लॉजिक, और पेलर अर्थात्) का जवाब दिया, जो मुझे बताता है कि ज्यादातर लोग इस बात से अनजान हैं कि वास्तव में क्या होता है एक तिथि वस्तु बनाएँ।

लंबा जवाब

दस्तावेज कहां है जो तिथि () ऑब्जेक्ट द्वारा समर्थित स्वरूप विनिर्देशों को सूचीबद्ध करता है?


प्रश्न का उत्तर देने के लिए, या आम तौर पर इस प्रश्न का उत्तर भी देखें, आपको यह जानना होगा कि जावास्क्रिप्ट एक उपन्यास भाषा नहीं है; यह वास्तव में ईसीएमएस्क्रिप्ट का कार्यान्वयन है, और ईसीएमएस्क्रिप्ट मानकों का पालन करता है (लेकिन ध्यान दें, जावास्क्रिप्ट वास्तव में उन मानकों को पूर्व-दिनांकित करता है; ईएमसीएस्क्रिप्ट मानकों को लाइवस्क्रिप्ट / जावास्क्रिप्ट के प्रारंभिक कार्यान्वयन से बनाया गया है)। वर्तमान ईसीएमएस्क्रिप्ट मानक 5.1 (2011) है; उस समय जब सवाल मूल रूप से पूछा गया था (जून '0 9), मानक 3 (4 छोड़ दिया गया था), लेकिन 200 9 के अंत में पद के तुरंत बाद 5 जारी किया गया था। इसमें एक समस्या की रूपरेखा होनी चाहिए; एक जावास्क्रिप्ट कार्यान्वयन का मानक क्या हो सकता है, वास्तव में यह नहीं दर्शा सकता है कि वास्तव में क्या है, क्योंकि ए) यह किसी दिए गए मानक का कार्यान्वयन है, बी) मानक के सभी कार्यान्वयन puritan नहीं हैं, और सी) कार्यक्षमता को सिंक्रनाइज़ेशन में जारी नहीं किया जाता है डी के रूप में नया मानक) एक कार्यान्वयन प्रगति पर निरंतर काम है

अनिवार्य रूप से, जावास्क्रिप्ट से निपटने पर, आप कार्यान्वयन (जावास्क्रिप्ट स्वयं) के व्युत्पन्न (ब्राउज़र के लिए विशिष्ट जावास्क्रिप्ट) से निपट रहे हैं। उदाहरण के लिए, Google का V8, ECMAScript 5.0 लागू करता है, लेकिन इंटरनेट एक्सप्लोरर का जेस्क्रिप्ट किसी भी ईसीएमएस्क्रिप्ट मानक के अनुरूप होने का प्रयास नहीं करता है, फिर भी इंटरनेट एक्सप्लोरर 9 ईसीएमएस्क्रिप्ट 5.0 के अनुरूप है।

जब एक ही तर्क नई तिथि () को पास किया जाता है, तो यह इस फ़ंक्शन प्रोटोटाइप को रोकता है:

new Date(value)

जब दो या अधिक तर्क नई तिथि () पर पास किए जाते हैं, तो यह इस फ़ंक्शन प्रोटोटाइप को रोकता है:

new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )


उन दोनों कार्यों को परिचित लगना चाहिए, लेकिन यह तुरंत आपके प्रश्न का उत्तर नहीं देता है और स्वीकार्य "दिनांक प्रारूप" के रूप में क्या मात्रा को आगे स्पष्टीकरण की आवश्यकता होती है। जब आप नई तिथि () को स्ट्रिंग पास करते हैं, तो यह प्रोटोटाइप को कॉल करेगा (ध्यान दें कि मैं प्रोटोटाइप शब्द का उपयोग कर रहा हूं; संस्करण अलग-अलग फ़ंक्शन हो सकते हैं, या यह एक फ़ंक्शन में सशर्त कथन का हिस्सा हो सकता है) "मान" पैरामीटर के लिए तर्क के रूप में आपकी स्ट्रिंग के साथ नई तिथि (मान) । यह फ़ंक्शन पहले जांच करेगा कि यह एक संख्या या स्ट्रिंग है या नहीं। इस समारोह के लिए दस्तावेज यहां पाया जा सकता है:

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.3.2

इससे, हम यह समझ सकते हैं कि नई तिथि (मान) के लिए स्ट्रिंग स्वरूपण की अनुमति प्राप्त करने के लिए, हमें विधि .parse (स्ट्रिंग) विधि को देखना होगा। इस विधि के लिए दस्तावेज यहां पाया जा सकता है:

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2

और हम आगे अनुमान लगा सकते हैं कि दिनांक एक संशोधित आईएसओ 8601 विस्तारित प्रारूप में होने की उम्मीद है, जैसा कि यहां निर्दिष्ट है:

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

हालांकि, हम अनुभव से पहचान सकते हैं कि जावास्क्रिप्ट की दिनांक वस्तु अन्य प्रारूपों को स्वीकार करती है (इस प्रश्न के अस्तित्व से पहले स्थान पर लागू), और यह ठीक है क्योंकि ECMAScript कार्यान्वयन विशिष्ट प्रारूपों के लिए अनुमति देता है। हालांकि, यह अभी भी उपलब्ध प्रारूपों पर कौन सा दस्तावेज उपलब्ध है, इस सवाल का जवाब नहीं देता है, न ही वास्तव में कौन से स्वरूपों की अनुमति है। हम Google के जावास्क्रिप्ट कार्यान्वयन को देखने जा रहे हैं, वी 8; कृपया ध्यान दें कि मैं यह सुझाव नहीं दे रहा हूं कि यह "सर्वश्रेष्ठ" जावास्क्रिप्ट इंजन है (कैसे कोई "सर्वश्रेष्ठ" या "अच्छा" भी परिभाषित कर सकता है) और कोई यह नहीं मान सकता कि वी 8 में अनुमत प्रारूप आज उपलब्ध सभी प्रारूपों का प्रतिनिधित्व करते हैं, लेकिन मुझे लगता है कि यह उचित है मान लीजिए कि वे आधुनिक उम्मीदों का पालन करते हैं।

Google की वी 8, date.js, डेटकॉन्स्ट्रक्टर

https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#141

डेटकॉन्स्ट्रक्टर फ़ंक्शन को देखते हुए, हम कटौती कर सकते हैं कि हमें डेटपर्स फ़ंक्शन ढूंढने की आवश्यकता है; हालांकि, ध्यान दें कि "वर्ष" वास्तविक वर्ष नहीं है और केवल "वर्ष" पैरामीटर का संदर्भ है।

Google की वी 8, date.js, डेटपर्स

https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#270

यह% DateParseString को कॉल करता है, जो वास्तव में एक C ++ फ़ंक्शन के लिए रन-टाइम फ़ंक्शन संदर्भ है। यह निम्नलिखित कोड को संदर्भित करता है:

Google का V8, runtime.cc,% DateParseString

https://code.google.com/p/v8/source/browse/trunk/src/runtime.cc?r=18400#9559

फ़ंक्शन कॉल जिसे हम इस फ़ंक्शन में चिंतित हैं डेटपरसर :: पार्स () के लिए है; उन फ़ंक्शन कॉल के आस-पास तर्क को अनदेखा करें, ये केवल एन्कोडिंग प्रकार (ASCII और UC16) के अनुरूप होने के लिए चेक हैं। डेटपार्सर :: पार्स यहां परिभाषित किया गया है:

Google का वी 8, डेटपार्सर-इनएलएच, डेटपार्सर :: पार्स

https://code.google.com/p/v8/source/browse/trunk/src/dateparser-inl.h?r=18400#36

यह वह कार्य है जो वास्तव में परिभाषित करता है कि यह किस प्रारूप को स्वीकार करता है। अनिवार्य रूप से, यह ईएमसीएस्क्रिप्ट 5.0 आईएसओ 8601 मानक के लिए जांचता है और यदि यह मानक अनुरूप नहीं है, तो यह विरासत प्रारूपों के आधार पर तिथि बनाने का प्रयास करेगा। टिप्पणियों के आधार पर कुछ महत्वपूर्ण बिंदु:

  1. पार्सर के लिए अज्ञात पहले नंबर से पहले शब्द अनदेखा किए जाते हैं।
  2. अभिभावक पाठ को नजरअंदाज कर दिया जाता है।
  3. ":" के बाद बिना हस्ताक्षर किए गए नंबरों को "टाइम घटक" के रूप में व्याख्या किया जाता है।
  4. बिना हस्ताक्षर किए गए नंबर "।" को "टाइम घटक" के रूप में व्याख्या किया जाता है, और इसके बाद मिलीसेकंड का पालन किया जाना चाहिए।
  5. घंटे या घंटे के मिनट के बाद हस्ताक्षरित संख्या (जैसे +5: 15 या +0515) को टाइमज़ोन के रूप में व्याख्या किया जाता है।
  6. घंटे और मिनट घोषित करते समय, आप या तो "एचएच: मिमी" या "हम्म" का उपयोग कर सकते हैं।
  7. शब्द जो समय क्षेत्र इंगित करते हैं उन्हें समय क्षेत्र के रूप में व्याख्या किया जाता है।
  8. अन्य सभी संख्याओं को "दिनांक घटकों" के रूप में व्याख्या किया जाता है।
  9. एक महीने के पहले तीन अंकों से शुरू होने वाले सभी शब्द महीने के रूप में व्याख्या किए जाते हैं।
  10. आप दो प्रारूपों में से एक में मिनटों और घंटों को एक साथ परिभाषित कर सकते हैं: "एचएच: मिमी" या "हम्म"।
  11. एक संख्या संसाधित होने के बाद "+", "-" और बेजोड़ ")" जैसे प्रतीकों की अनुमति नहीं है।
  12. कई प्रारूपों (जैसे 1970-01-01) से मेल खाने वाले आइटम मानक अनुपालन ईएमसीएस्क्रिप्ट 5.0 आईएसओ 8601 स्ट्रिंग के रूप में संसाधित होते हैं।

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

http://tools.ietf.org/html/rfc2822#page-14

माइक्रोसॉफ्ट डेवलपर नेटवर्क अतिरिक्त रूप से डेट ऑब्जेक्ट के लिए एक अतिरिक्त मानक का उल्लेख करता है: ईसीएमए -402, ईसीएमएस्क्रिप्ट इंटरनेशनल एपीआई विशिष्टता, जो ईसीएमएस्क्रिप्ट 5.1 मानक (और भविष्य वाले) के पूरक है। यह यहां पाया जा सकता है:

http://www.ecma-international.org/ecma-402/1.0/

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

संदर्भ

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.3.2

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

http://tools.ietf.org/html/rfc2822#page-14

http://www.ecma-international.org/ecma-402/1.0/

https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#141

https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#270

https://code.google.com/p/v8/source/browse/trunk/src/runtime.cc?r=18400#9559

https://code.google.com/p/v8/source/browse/trunk/src/dateparser-inl.h?r=18400#36

साधन

developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

http://msdn.microsoft.com/en-us/library/ff743760(v=vs.94).aspx


उदाहरण कोड:

var d = new Date();
var time = d.toISOString().replace(/.*?T(\d+:\d+:\d+).*/, "$1");

आउटपुट:

"13:45:20"


यहां एक फ़ंक्शन है जिसका मैं बहुत उपयोग करता हूं। परिणाम yyyy-mm-dd hh: mm: ss.nnn है।

function date_and_time() {
    var date = new Date();
    //zero-pad a single zero if needed
    var zp = function (val){
        return (val <= 9 ? '0' + val : '' + val);
    }

    //zero-pad up to two zeroes if needed
    var zp2 = function(val){
        return val <= 99? (val <=9? '00' + val : '0' + val) : ('' + val ) ;
    }

    var d = date.getDate();
    var m = date.getMonth() + 1;
    var y = date.getFullYear();
    var h = date.getHours();
    var min = date.getMinutes();
    var s = date.getSeconds();
    var ms = date.getMilliseconds();
    return '' + y + '-' + zp(m) + '-' + zp(d) + ' ' + zp(h) + ':' + zp(min) + ':' + zp(s) + '.' + zp2(ms);
}

JsSimpleDateFormat is a library that can format the date object and parse the formatted string back to Date object. It uses the Java format (SimpleDateFormat class). The name of months and days can be localized.

उदाहरण:

var sdf = new JsSimpleDateFormat("EEEE, MMMM dd, yyyy");
var formattedString = sdf.format(new Date());
var dateObject = sdf.parse("Monday, June 29, 2009");

I was unable to find any definitive documentation on valid date formats so I wrote my own test to see what is supported in various browsers.

http://blarg.co.uk/blog/javascript-date-formats

My results concluded the following formats are valid in all browsers that I tested (examples use the date "9th August 2013"):

[Full Year]/[Month]/[Date number] - Month can be either the number with or without a leading zero or the month name in short or long format, and date number can be with or without a leading zero.

  • 2013/08/09
  • 2013/08/9
  • 2013/8/09
  • 2013/8/9
  • 2013/August/09
  • 2013/August/9
  • 2013/Aug/09
  • 2013/Aug/9

[Month]/[Full Year]/[Date Number] - Month can be either the number with or without a leading zero or the month name in short or long format, and date number can be with or without a leading zero.

  • 08/2013/09
  • 08/2013/9
  • 8/2013/09
  • 8/2013/9
  • August/2013/09
  • August/2013/9
  • Aug/2013/09
  • Aug/2013/9

Any combination of [Full Year], [Month Name] and [Date Number] separated by spaces - Month name can be in either short or long format, and date number can be with or without a leading zero.

  • 2013 August 09
  • August 2013 09
  • 09 August 2013
  • 2013 Aug 09
  • Aug 9 2013
  • 2013 9 Aug
  • आदि...

Also valid in "modern browsers" (or in other words all browsers except IE9 and below)

[Full Year]-[Month Number]-[Date Number] - Month and Date Number must include leading zeros (this is the format that the MySQL Date type uses)

  • 2013-08-09

Using month names:
Interestingly, when using month names I discovered that only the first 3 characters of the month name are ever used so all the of the following are perfectly valid:

new Date('9 August 2013');
new Date('9 Aug 2013');
new Date('9 Augu 2013');
new Date('9 Augustagfsdgsd 2013');

फ्रेमवर्क मुक्त, सीमित लेकिन प्रकाश

var d = (new Date()+'').split(' ');
// ["Tue", "Sep", "03", "2013", "21:54:52", "GMT-0500", "(Central", "Daylight", "Time)"]

[d[3], d[1], d[2], d[4]].join(' ');
// "2013 Sep 03 21:58:03"

मुझे जावास्क्रिप्ट का उपयोग करके समय और तारीख को प्रारूपित करने और तिथियों के साथ काम करने के 10 तरीके पसंद हैं।

असल में, आपके पास तीन विधियां हैं और आपको अपने लिए तारों को जोड़ना होगा:

getDate() // Returns the date
getMonth() // Returns the month
getFullYear() // Returns the year

उदाहरण:

<script type="text/javascript">
    var d = new Date();
    var curr_date = d.getDate();
    var curr_month = d.getMonth() + 1; //Months are zero based
    var curr_year = d.getFullYear();
    console.log(curr_date + "-" + curr_month + "-" + curr_year);
</script>


The library sugar.js has some great functionality for working with dates in JavaScript. And it is very well documented .

Sugar gives the Date class much love starting with the Date.create method which can understand dates in just about any format in 15 major languages, including relative formats like "1 hour ago". Dates can also be output in any format or language using an easy to understand syntax, with shortcuts to commonly used date formats. Complex date comparison is also possible with methods like is, which understand any format and apply built in precision.

A few examples:

Date.create('July 4, 1776')  -> July 4, 1776
Date.create(-446806800000)   -> November 5, 1955
Date.create(1776, 6, 4)      -> July 4, 1776
Date.create('1776年07月04日', 'ja') -> July 4, 1776
Date.utc.create('July 4, 1776', 'en')  -> July 4, 1776

Date.create().format('{Weekday} {d} {Month}, {yyyy}')    -> Monday July 4, 2003
Date.create().format('{hh}:{mm}')                        -> 15:57
Date.create().format('{12hr}:{mm}{tt}')                  -> 3:57pm
Date.create().format(Date.ISO8601_DATETIME)              -> 2011-07-05 12:24:55.528Z

Date.create().is('the 7th of June') -> false
Date.create().addMonths(2); ->"Sunday, June 15, 2014 13:39"

आप meizz द्वारा नोट किए गए meizz एक नई format विधि के साथ Date ऑब्जेक्ट का विस्तार कर सकते हैं, नीचे लेखक द्वारा दिया गया कोड है। और यहाँ एक jsfiddle

Date.prototype.format = function(format) //author: meizz
{
  var o = {
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(),    //day
    "h+" : this.getHours(),   //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
    "S" : this.getMilliseconds() //millisecond
  }

  if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
      RegExp.$1.length==1 ? o[k] :
        ("00"+ o[k]).substr((""+ o[k]).length));
  return format;
}

alert(new Date().format("yyyy-MM-dd"));
alert(new Date("january 12 2008 11:12:30").format("yyyy-MM-dd h:mm:ss"));

Just to continue gongzhitaao's solid answer - this handles AM/PM

 Date.prototype.format = function (format) //author: meizz
{
    var hours = this.getHours();
    var ttime = "AM";
    if(format.indexOf("t") > -1 && hours > 12)
    {
        hours = hours - 12;
        ttime = "PM";
     }

var o = {
    "M+": this.getMonth() + 1, //month
    "d+": this.getDate(),    //day
    "h+": hours,   //hour
    "m+": this.getMinutes(), //minute
    "s+": this.getSeconds(), //second
    "q+": Math.floor((this.getMonth() + 3) / 3),  //quarter
    "S": this.getMilliseconds(), //millisecond,
    "t+": ttime
}

if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
  (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
    format = format.replace(RegExp.$1,
      RegExp.$1.length == 1 ? o[k] :
        ("00" + o[k]).substr(("" + o[k]).length));
return format;
}

See dtmFRM.js . If you are familiar with C#'s custom date and time format string, this library should do the exact same thing.

DEMO :

var format = new dtmFRM();
var now = new Date().getTime();

$('#s2').append(format.ToString(now,"This month is : MMMM") + "</br>");
$('#s2').append(format.ToString(now,"Year is  : y or yyyy or yy") + "</br>");
$('#s2').append(format.ToString(now,"mm/yyyy/dd") + "</br>");
$('#s2').append(format.ToString(now,"dddd, MM yyyy ") + "</br>");
$('#s2').append(format.ToString(now,"Time is : hh:mm:ss ampm") + "</br>");
$('#s2').append(format.ToString(now,"HH:mm") + "</br>");
$('#s2').append(format.ToString(now,"[ddd,MMM,d,dddd]") + "</br></br>");

now = '11/11/2011 10:15:12' ;

$('#s2').append(format.ToString(now,"MM/dd/yyyy hh:mm:ss ampm") + "</br></br>");

now = '40/23/2012'
$('#s2').append(format.ToString(now,"Year is  : y or yyyy or yy") + "</br></br>");

आपको डेट ऑब्जेक्ट का यह संशोधन उपयोगी हो सकता है, जो किसी भी लाइब्रेरी से छोटा है और विभिन्न प्रारूपों का समर्थन करने के लिए आसानी से विस्तार योग्य है:

ध्यान दें:

  • यह Object.keys() का उपयोग करता है जो पुराने ब्राउज़र में अपरिभाषित है, इसलिए आपको दिए गए लिंक से Object.keys() लागू करने की आवश्यकता हो सकती है।

कोड

Date.prototype.format = function(format) {
    // set default format if function argument not provided
    format = format || 'YYYY-MM-DD hh:mm';

    var zeropad = function(number, length) {
            number = number.toString();
            length = length || 2;
            while(number.length < length)
                number = '0' + number;
            return number;
        },
        // here you can define your formats
        formats = {
            YYYY: this.getFullYear(),
            MM: zeropad(this.getMonth() + 1),
            DD: zeropad(this.getDate()),
            hh: zeropad(this.getHours()),
            mm: zeropad(this.getMinutes())
        },
        pattern = '(' + Object.keys(formats).join(')|(') + ')';

    return format.replace(new RegExp(pattern, 'g'), function(match) {
        return formats[match];
    });
};

उपयोग

var now = new Date;
console.log(now.format());
// outputs: 2015-02-09 11:47
var yesterday = new Date('2015-02-08');
console.log(yesterday.format('hh:mm YYYY/MM/DD'));
// outputs: 00:00 2015/02/08

If you don't need all the features that a library like momentjs provides, then you can use my port of strftime . It's lightweight (1.35 KB vs. 57.9 KB minified compared to Moment.js 2.15.0) and provides most of the functionality of strftime() .

/* Port of strftime(). Compatibility notes:
 *
 * %c - formatted string is slightly different
 * %D - not implemented (use "%m/%d/%y" or "%d/%m/%y")
 * %e - space is not added
 * %E - not implemented
 * %h - not implemented (use "%b")
 * %k - space is not added
 * %n - not implemented (use "\n")
 * %O - not implemented
 * %r - not implemented (use "%I:%M:%S %p")
 * %R - not implemented (use "%H:%M")
 * %t - not implemented (use "\t")
 * %T - not implemented (use "%H:%M:%S")
 * %U - not implemented
 * %W - not implemented
 * %+ - not implemented
 * %% - not implemented (use "%")
 *
 * strftime() reference:
 * http://man7.org/linux/man-pages/man3/strftime.3.html
 *
 * Day of year (%j) code based on Joe Orost's answer:
 * http://.com/questions/8619879/javascript-calculate-the-day-of-the-year-1-366
 *
 * Week number (%V) code based on Taco van den Broek's prototype:
 * http://techblog.procurios.nl/k/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html
 */
function strftime(sFormat, date) {
  if (!(date instanceof Date)) date = new Date();
  var nDay = date.getDay(),
    nDate = date.getDate(),
    nMonth = date.getMonth(),
    nYear = date.getFullYear(),
    nHour = date.getHours(),
    aDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
    aMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    aDayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],
    isLeapYear = function() {
      if (nYear&3!==0) return false;
      return nYear%100!==0 || year%400===0;
    },
    getThursday = function() {
      var target = new Date(date);
      target.setDate(nDate - ((nDay+6)%7) + 3);
      return target;
    },
    zeroPad = function(nNum, nPad) {
      return ('' + (Math.pow(10, nPad) + nNum)).slice(1);
    };
  return sFormat.replace(/%[a-z]/gi, function(sMatch) {
    return {
      '%a': aDays[nDay].slice(0,3),
      '%A': aDays[nDay],
      '%b': aMonths[nMonth].slice(0,3),
      '%B': aMonths[nMonth],
      '%c': date.toUTCString(),
      '%C': Math.floor(nYear/100),
      '%d': zeroPad(nDate, 2),
      '%e': nDate,
      '%F': date.toISOString().slice(0,10),
      '%G': getThursday().getFullYear(),
      '%g': ('' + getThursday().getFullYear()).slice(2),
      '%H': zeroPad(nHour, 2),
      '%I': zeroPad((nHour+11)%12 + 1, 2),
      '%j': zeroPad(aDayCount[nMonth] + nDate + ((nMonth>1 && isLeapYear()) ? 1 : 0), 3),
      '%k': '' + nHour,
      '%l': (nHour+11)%12 + 1,
      '%m': zeroPad(nMonth + 1, 2),
      '%M': zeroPad(date.getMinutes(), 2),
      '%p': (nHour<12) ? 'AM' : 'PM',
      '%P': (nHour<12) ? 'am' : 'pm',
      '%s': Math.round(date.getTime()/1000),
      '%S': zeroPad(date.getSeconds(), 2),
      '%u': nDay || 7,
      '%V': (function() {
              var target = getThursday(),
                n1stThu = target.valueOf();
              target.setMonth(0, 1);
              var nJan1 = target.getDay();
              if (nJan1!==4) target.setMonth(0, 1 + ((4-nJan1)+7)%7);
              return zeroPad(1 + Math.ceil((n1stThu-target)/604800000), 2);
            })(),
      '%w': '' + nDay,
      '%x': date.toLocaleDateString(),
      '%X': date.toLocaleTimeString(),
      '%y': ('' + nYear).slice(2),
      '%Y': nYear,
      '%z': date.toTimeString().replace(/.+GMT([+-]\d+).+/, '$1'),
      '%Z': date.toTimeString().replace(/.+\((.+?)\)$/, '$1')
    }[sMatch] || sMatch;
  });
}

Sample usage:

strftime('%F'); // Returns "2016-09-15"
strftime('%A, %B %e, %Y'); // Returns "Thursday, September 15, 2016"

// You can optionally pass it a Date object...

strftime('%x %X', new Date('1/1/2016')); // Returns "1/1/2016 12:00:00 AM"

The latest code is available here: https://github.com/thdoan/strftime


Personally, because I use both PHP and jQuery/javascript in equal measures, I use the date function from php.js http://phpjs.org/functions/date/

Using a library that uses the same format strings as something I already know is easier for me, and the manual containing all of the format string possibilities for the date function is of course online at php.net

You simply include the date.js file in your HTML using your preferred method then call it like this:

var d1=new Date();
var datestring = date('Y-m-d', d1.valueOf()/1000);

You can use d1.getTime() instead of valueOf() if you want, they do the same thing.

The divide by 1000 of the javascript timestamp is because a javascript timestamp is in miliseconds but a PHP timestamp is in seconds.


All browsers

The most reliable way to format a date with the source format you're using, is to apply the following steps :

  1. Use new Date() to create a Date object
  2. Use .getDate() , .getMonth() and .getFullYear() to get respectively the day, month and year
  3. Paste the pieces together according to your target format

उदाहरण :

var date = '2015-11-09T10:46:15.097Z';

function format(input) {
    var date = new Date(input);
    return [
       ("0" + date.getDate()).slice(-2),
       ("0" + (date.getMonth()+1)).slice(-2),
       date.getFullYear()
    ].join('/');
}

document.body.innerHTML = format(date); // OUTPUT : 09/11/2015

(See also this Fiddle ).

Modern browsers only

You can also use the built-in .toLocaleDateString method to do the formatting for you. You just need pass along the proper locale and options to match the right format, which unfortunately is only supported by modern browsers (*) :

var date = '2015-11-09T10:46:15.097Z';

function format(input) {
    return new Date(input).toLocaleDateString('en-GB', {
        year: 'numeric',
        month: '2-digit',
        day: '2-digit'
    });
}

document.body.innerHTML = format(date); // OUTPUT : 09/11/2015

(See also this Fiddle ).

(*) According to the MDN , "Modern browsers" means Chrome 24+, Firefox 29+, IE11, Edge12+, Opera 15+ & Safari nightly build


Just another option, which I wrote:

DP_DateExtensions Library

Not sure if it'll help, but I've found it useful in several projects - looks like it'll do what you need.

Supports date/time formatting, date math (add/subtract date parts), date compare, date parsing, etc. It's liberally open sourced.

No reason to consider it if you're already using a framework (they're all capable), but if you just need to quickly add date manipulation to a project give it a chance.



मैंने यह बहुत ही सरल फ़ॉर्मेटर बनाया है, यह कट / एन / पेस्टेबल (नेटर संस्करण के साथ अपडेट किया गया है):

function DateFmt(fstr) {
  this.formatString = fstr

  var mthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  var dayNames = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
  var zeroPad = function(number) {
     return ("0"+number).substr(-2,2);
  }

  var dateMarkers = {
    d:['getDate',function(v) { return zeroPad(v)}],
    m:['getMonth',function(v) { return zeroPad(v+1)}],
    n:['getMonth',function(v) { return mthNames[v]; }],
    w:['getDay',function(v) { return dayNames[v]; }],
    y:['getFullYear'],
    H:['getHours',function(v) { return zeroPad(v)}],
    M:['getMinutes',function(v) { return zeroPad(v)}],
    S:['getSeconds',function(v) { return zeroPad(v)}],
    i:['toISOString']
  };

  this.format = function(date) {
    var dateTxt = this.formatString.replace(/%(.)/g, function(m, p) {
      var rv = date[(dateMarkers[p])[0]]()

      if ( dateMarkers[p][1] != null ) rv = dateMarkers[p][1](rv)

      return rv

    });

    return dateTxt
  }

}

fmt = new DateFmt("%w %d:%n:%y - %H:%M:%S  %i")
v = fmt.format(new Date())

http://snipplr.com/view/66968.82825/


momentjs

यह पार्सिंग, मैनिपुलेटिंग और स्वरूपण तिथियों के लिए एक (हल्के वजन) * जावास्क्रिप्ट दिनांक लाइब्रेरी है।

var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");                       // "Sun, 3PM"

(*) हल्के वजन का अर्थ 9.3 केबी छोटा + न्यूनतम संभव सेटअप में gzipped (feb 2014)


अन्य उत्तरों में प्रदान किए गए विकल्पों में से कई को देखते हुए, मैंने अपना सीमित लेकिन सरल समाधान लिखने का फैसला किया कि अन्य उपयोगी भी हो सकते हैं।

/**
* Format date as a string
* @param date - a date object (usually "new Date();")
* @param format - a string format, eg. "DD-MM-YYYY"
*/
function dateFormat(date, format) {
    // Calculate date parts and replace instances in format string accordingly
    format = format.replace("DD", (date.getDate() < 10 ? '0' : '') + date.getDate()); // Pad with '0' if needed
    format = format.replace("MM", (date.getMonth() < 9 ? '0' : '') + (date.getMonth() + 1)); // Months are zero-based
    format = format.replace("YYYY", date.getFullYear());
    return format;
}

उदाहरण का उपयोग:

console.log("The date is: " + dateFormat(new Date(), "DD/MM/YYYY"));

Moment.js माध्यम से

जेएसफ़िल्ड: http://jsfiddle.net/guhokemk/1/

function compare(dateTimeA, dateTimeB) {
    var momentA = moment(dateTimeA,"DD/MM/YYYY");
    var momentB = moment(dateTimeB,"DD/MM/YYYY");
    if (momentA > momentB) return 1;
    else if (momentA < momentB) return -1;
    else return 0;
}

alert(compare("11/07/2015", "10/07/2015"));

विधि dateTimeA 1 देता है यदि dateTimeA से अधिक है

विधि dateTimeA 0 देता है यदि dateTimeA बराबर है

विधि 1 लौटाती है यदि dateTimeA से कम है





javascript datetime date