Yyyy-mm-dd के रूप में जावास्क्रिप्ट तिथि को प्रारूपित करें


382

मेरे पास प्रारूप के साथ एक तारीख है Sun May 11,2014। मैं इसे 2014-05-11जावास्क्रिप्ट का उपयोग करके कैसे परिवर्तित कर सकता हूं ?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

कोड ऊपर मुझे एक ही तिथि प्रारूप देता है, sun may 11,2014। मैं इसे कैसे ठीक करूं?


7
मुझे संदेह है कि उपरोक्त कोड आपको सिंटैक्स त्रुटि के अलावा कुछ और देता है।
प्लेक्स

वास्तव में Moment.js जैसी लाइब्रेरी का उपयोग करने पर विचार करें। यह वांछित परिणाम में प्रारूपित होगा :)
अंकुर

5
जब 5 लाइन का कोड काम कर सकता है तो लाइब्रेरी का उपयोग क्यों करें? @ ठाकुर
काला


संबंधित: जावास्क्रिप्ट में मान्य दिनांक समय स्ट्रिंग्स क्या हैं? ध्यान दें कि "Sun May 11,2014" एक वैध दिनांक स्ट्रिंग नहीं है और इसे पार्स करना कुछ ब्राउज़रों में विफल हो सकता है।
str

जवाबों:


524

तुम कर सकते हो:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}

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

alert(formatDate('Sun May 11,2014'));

आउटपुट:

2014-05-11

JSFiddle पर डेमो: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
वास्तव में एक ही बयान में कई चर घोषणाएं? stackoverflow.com/questions/694102/…
bhspencer

8
@ Fuser97381 एक ही बयान में कई चर घोषणा सिर्फ एक सौंदर्य शैली की प्राथमिकता से अधिक है। यह एक खतरनाक प्रथा है। यदि आप अनजाने में प्रत्येक घोषणा के बाद अल्पविराम जोड़ते हैं तो आप वैश्विक चर बनाते हैं। ऐसा कुछ नहीं, जिस पर प्रोत्साहित किया जाना चाहिए जो एक प्रश्न का विहित उत्तर बन सकता है।
bhspencer

6
'use strict';@ भास्कर
विक्स

3
दिनांक स्ट्रिंग को रिफ़ॉर्मेट करना बिल्ट-इन पार्सर द्वारा गैर-मानक स्ट्रिंग्स के सफल पार्सिंग पर निर्भर नहीं होना चाहिए। ओपी प्रारूप को देखते हुए, कम तारीख में बिना किसी तिथि का उपयोग किए इसे पुन: स्वरूपित किया जा सकता है।
रोबग

रेंज 1 ~ 31 में अधिक 30 दिन कैसे बढ़ाएँ?
स्टीव एंजेलो

455

बस अंतर्निहित toISOStringपद्धति का लाभ उठाएं जो आपकी तारीख को आईएसओ 8601 प्रारूप में लाता है:

yourDate.toISOString().split('T')[0]

जहाँ आपका डेट आपकी ऑब्जेक्ट है।

संपादित करें: कुछ लोगों ने टिप्पणियों में समय क्षेत्र को संभालने के लिए इसे लिखा है:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]

238
इस विधि के साथ BE CAREFUL क्योंकि यह पहली बार UTC को तिथि में रूपांतरित करता है। यदि आप एक + टाइमज़ोन में हैं और आपका समय भाग दिन में जल्दी है, तो यह एक दिन रोल-बैक कर सकता है। वैकल्पिक रूप से, यदि आप एक समय-क्षेत्र में हैं और आपका समय भाग दिन में देर से है, तो यह एक दिन आगे बढ़ सकता है।
ल्यूक बॉल्च

4
इसके बजाय यह कोशिश करें:new Date(yourDateStr).toISOString().split('T')[0]
exbuddha

24
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0] यह समयक्षेत्र के मुद्दे को हल करना चाहिए
mjwrazor

5
now.toISOString().substring(0,10); यह एक क्लीनर विकल्प है, क्योंकि यह आपको याद दिलाता है कि YYYY-MM-DDपूर्ण iso प्रारूप के पहले दस अक्षर हैं
Gutimore

4
नोट: @mjwrazor द्वारा टिप्पणी किए गए सहायक समाधान का उपयोग करते हुए, मुझे सही तिथि प्राप्त करने के लिए ऑफ़सेट जोड़ने के बजाय घटाना था+ (offset- (offset
rococo

135

मैं इस तरह का उपयोग प्रारूप yyyy-mm-dd में दिनांक प्राप्त करने के लिए करता हूँ :)

var todayDate = new Date().toISOString().slice(0,10);

14
आप @Luke_Baulch द्वारा बताए गए दिन से स्विच करने की तारीख को कैसे संभालेंगे?
मालवीयस

7
आप ऐसा कर सकते हैं: var TodayDate = new Date (); TodayDate.setMinutes (आजDate.getMinutes () - TodayDate.getTimezoneOffset ()); । todayDate.toISOString () टुकड़ा (0,10); इससे यूटीसी समस्या से बचने में मदद करनी चाहिए।
फर्नांडो एगुइलर

1
@FernandoAguilar एक संदेह हालांकि, हमें कैसे पता चलेगा कि हमें ऑफसेट को घटाना है या इसे जोड़ना है?
WhyAto8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);मुझे देता है "2018-03-25"। एक और प्रणाली पर var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);मुझे देता है "2018-03-27"
सलमान ए

2
हमेशा काम नहीं करता है। यह कभी-कभी यूटीसी रूपांतरण के कारण एक दिन घटा देता है।
निकग

110

अपनी तिथि को yyyy-mm-dd प्रारूप में बदलने का सबसे सरल तरीका यह है:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

यह काम किस प्रकार करता है:

  • new Date("Sun May 11,2014")स्ट्रिंग "Sun May 11,2014"को एक दिनांक ऑब्जेक्ट में कनवर्ट करता है जो Sun May 11 2014 00:00:00वर्तमान लोकेल (होस्ट सिस्टम सेटिंग्स) के आधार पर टाइमज़ोन में समय का प्रतिनिधित्व करता है
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))अपनी दिनांक को उस दिनांक ऑब्जेक्ट Sun May 11 2014 00:00:00में कनवर्ट करता है , जो समय क्षेत्र ऑफ़सेट को घटाकर UTC (मानक समय) में समय के साथ मेल खाता है
  • .toISOString() दिनांक ऑब्जेक्ट को ISO 8601 स्ट्रिंग में कनवर्ट करता है 2014-05-11T00:00:00.000Z
  • .split("T") स्ट्रिंग को सरणी में विभाजित करता है ["2014-05-11", "00:00:00.000Z"]
  • [0] उस सरणी का पहला तत्व लेता है

डेमो

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


20
और कोई भी इस बात से सहमत नहीं है कि यह सबसे आसान तरीका है ??
अंतराल

.toISOString () हालांकि डेलाइट बचत के साथ सही ढंग से काम नहीं करता है।
जो आइडियाज

2
@JoeDevmon: मैं नहीं देखता कि यहाँ प्रासंगिक कैसे है। - (date.getTimezoneOffset() * 60000 )बिट डेलाइट सेविंग टाइम के प्रभाव सहित किसी भी समय क्षेत्र मतभेद, हटा देते हैं।
जॉन सलेगर्स

2
@ जॉनसन ने कहा कि मैं क्या सोच रहा था, लेकिन तब मुझे कुछ मामलों में पहले ही दिन मिल रहा था। मैंने रिफ्लेक्ट किया और आपका उदाहरण अब काम करता है। मेरे पास एक अजीब तारीख स्ट्रिंग या कुछ होना चाहिए था। इसके साथ चिपके रहने और इसे इंगित करने के लिए धन्यवाद। +1 +1
जो के विचार 1

2
मैंने एसओ और अन्य साइटों पर उच्च और निम्न खोज की है, जो जेएस में तारीखों के साथ टाइमज़ोन मुद्दों से निपटने का सबसे अच्छा तरीका ढूंढता है, और नीचे हाथ करता है, यह अब तक का सबसे आसान और सबसे अच्छा है। धन्यवाद!
हार्टलेसन

34
format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

परिणाम:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11

1
मुझे अतिरिक्त लचीलापन पसंद है जो इस समाधान को इस प्रश्न के अन्य उत्तरों पर देता है। मैंने इसका पूरी तरह से परीक्षण नहीं किया है, लेकिन मेरे इच्छित प्रारूप (यानी "yyyy-MM-dd hh: mm: ss") के लिए, यह अपेक्षा के अनुरूप काम करता है।
पोर्कस

3
आप कर सकते हैं eaaaaaaaasily से बचें eval
सलमान ए

3
यहाँ एक संस्करण है जो eval से बचता है और बेहतर jsfiddle.net/8904cmLd/2
m1m1k

2
इस प्रतिक्रिया से मुझे फायदा हुआ। मैंने उस लाइन को eval स्टेटमेंटreturn ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
JesusIsMyDriver.dll

26

कुछ उत्तरों का एक संयोजन:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');

मुझे समाधान सबसे अच्छा लगता है - पढ़ने में आसान, और toISOString()उस फ़ंक्शन का उपयोग करने के साथ संभावित समय क्षेत्र के नुकसान पर भरोसा नहीं करता है ।
मैट

यह पहला है जो मेरे मस्तिष्क को चोट नहीं पहुंचाता है।
कोकपिला

22

यदि आपके पास पुस्तकालयों का उपयोग करने के खिलाफ कुछ भी नहीं है, तो आप बस Moments.js पुस्तकालय का उपयोग कर सकते हैं :

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


शांत समाधान, लेकिन इसका 300kb पैकेज
एडम

13

बस इसका उपयोग करें:

var date = new Date('1970-01-01'); // Or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

सरल और मधुर;)


4
2 लेटर फॉर्मेट के लिए पेडिंग नहीं है। यदि दिनांक या माह 10 से कम है, तो यह एकल अंक दिखाएगा, इसीलिए इसे सीधे उपयोग नहीं किया जा सकता है।
यतेंद्र सिंह

हाँ, लेकिन यह केवल जावास्क्रिप्ट का उपयोग करके प्राप्त किया जा सकता है, आपकी आवश्यकता के अनुसार कुल मिलाकर मुझे ऐसा लगता है, है ना? @ यतेन्द्रसिंह
जैन

4
हाँ सही है, लेकिन प्रश्न के शीर्षक की जाँच करें "yyyy-mm-dd" प्रारूप वह चाहता है :)
यतेंदर सिंह

var old_date = नई तिथि (दिनांक); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitta Munirah Abdul Razak

1
महान। यह काम किया और सरल और संक्षिप्त था!
वलेद93

12

toISOString()मानती है कि आपकी तिथि स्थानीय समय है और इसे UTC में परिवर्तित कर दिया गया है। आपको एक गलत दिनांक स्ट्रिंग मिलेगी।

निम्न विधि आपको चाहिए जो आपको चाहिए।

Date.prototype.yyyymmdd = function() {         

    var yyyy = this.getFullYear().toString();                                    
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based         
    var dd  = this.getDate().toString();             

    return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};

स्रोत: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


8

वर्ष, माह, और दिन निकालें और फिर उन्हें एक साथ रखें। सीधे, सरल, और सटीक।

function formatDate(date) {
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 101).toString().substring(1);
    var day = (date.getDate() + 100).toString().substring(1);
    return year + "-" + month + "-" + day;
}

//Usage example:
alert(formatDate(new Date()));


8

आप ऑब्जेक्ट toLocaleDateString('fr-CA')पर उपयोग कर सकते हैंDate

console.log(new Date('Sun May 11,2014').toLocaleDateString('fr-CA'));

इसके अलावा, मुझे पता चला कि वे स्थान इस स्थान से सही परिणाम देते हैं सूची सभी स्थानों और उनके लघु कोड की सूची?

'en-CA'
'fr-CA'
'lt-LT'
'sv-FI'
'sv-SE'


किसी भी विचार क्यों यह काम करता है? क्या आईएसओ प्रारूप केवल डिफ़ॉल्ट है, या क्या ये स्थान वास्तव में उस प्रारूप का उपयोग करते हैं? यदि यह पूर्व है तो मुझे चिंता होगी कि यह भविष्य में अप्रत्याशित रूप से बदल सकता है।
जंबो

थिस ब्राउज़र के बाहर NodeJS के साथ काम नहीं कर रहा है।
डोनाटो

@jymbob मुझे लगता है कि ये स्थान वास्तव में उन प्रारूपों का उपयोग करते हैं। मैं इस विकिपीडिया पृष्ठ को देख कर उसी उत्तर पर आया हूं: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă

5

समयक्षेत्र पर भी विचार करने के लिए, यह एक-लाइनर बिना किसी पुस्तकालय के अच्छा होना चाहिए:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

5

आप इसे आज़मा सकते हैं: https://www.npmjs.com/package/timesolver

npm i timesolver

इसे अपने कोड में उपयोग करें:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

आप इस विधि का उपयोग करके दिनांक स्ट्रिंग प्राप्त कर सकते हैं:

getString

4

इनमें से किसी भी जवाब ने मुझे संतुष्ट नहीं किया। मैं एक क्रॉस-प्लेटफ़ॉर्म समाधान चाहता था जिसने मुझे किसी बाहरी पुस्तकालय का उपयोग किए बिना स्थानीय समयक्षेत्र में दिन दिया।

मैंने ये ढूंढ निकाला:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

उस दिन का समय वापस करना चाहिए, YYYY-MM-DD प्रारूप में, समयक्षेत्र में दिनांक संदर्भ।

उदाहरण के लिए, localDay(new Date("2017-08-24T03:29:22.099Z"))वापस आ जाएगी "2017-08-23", भले ही यह पहले से ही यूटीसी पर 24 है।

आपको Internet Explorer 8 में काम करने के लिए Date.prototype.toISOString को पॉलीफ़िल करने की आवश्यकता होगी , लेकिन इसे किसी और का समर्थन किया जाना चाहिए।


शायद यह ध्यान देने योग्य है कि यह केवल आपको 2017-08-23 देगा यदि आप यूटीसी (जैसे यूएस) में पर्याप्त रूप से पीछे हैं।
साइमन डी।

3

मैं हर बार इसे दोहराने की कोशिश करने के बजाय formatDate-js जैसी किसी चीज़ का उपयोग करने का सुझाव देता हूं । बस एक लाइब्रेरी का उपयोग करें जो सभी प्रमुख स्ट्रैफ़ाइम क्रियाओं का समर्थन करती है।

new Date().format("%Y-%m-%d")

3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

या

new Date().toISOString().split('T')[0]
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString()
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString().split('T')[0]

इसे इस्तेमाल करे!


दूसरा विकल्प गलत दिनांक प्रदर्शित कर सकता है क्योंकि यह UTC समयक्षेत्र में डेटा प्रदर्शित करेगा।
कभी देव

2

यहाँ यह करने का एक तरीका है:

var date = Date.parse('Sun May 11,2014');

function format(date) {
  date = new Date(date);

  var day = ('0' + date.getDate()).slice(-2);
  var month = ('0' + (date.getMonth() + 1)).slice(-2);
  var year = date.getFullYear();

  return year + '-' + month + '-' + day;
}

console.log(format(date));



1

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>


1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

1

पिछले उत्तर में से कुछ ठीक थे, लेकिन वे बहुत लचीले नहीं थे। मैं कुछ ऐसा चाहता था जो वास्तव में अधिक धार वाले मामलों को संभाल सके, इसलिए मैंने @orangleliu का उत्तर लिया और उस पर विस्तार किया। https://jsfiddle.net/8904cmLd/1/

function DateToString(inDate, formatString) {
    // Written by m1m1k 2018-04-05

    // Validate that we're working with a date
    if(!isValidDate(inDate))
    {
        inDate = new Date(inDate);
    }

    // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
    //formatString = CountryCodeToDateFormat(formatString);

    var dateObject = {
        M: inDate.getMonth() + 1,
        d: inDate.getDate(),
        D: inDate.getDate(),
        h: inDate.getHours(),
        m: inDate.getMinutes(),
        s: inDate.getSeconds(),
        y: inDate.getFullYear(),
        Y: inDate.getFullYear()
    };

    // Build Regex Dynamically based on the list above.
    // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
    var dateMatchRegex = joinObj(dateObject, "+|") + "+";
    var regEx = new RegExp(dateMatchRegex,"g");
    formatString = formatString.replace(regEx, function(formatToken) {
        var datePartValue = dateObject[formatToken.slice(-1)];
        var tokenLength = formatToken.length;

        // A conflict exists between specifying 'd' for no zero pad -> expand
        // to '10' and specifying yy for just two year digits '01' instead
        // of '2001'.  One expands, the other contracts.
        //
        // So Constrict Years but Expand All Else
        if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
        {
            // Expand single digit format token 'd' to
            // multi digit value '10' when needed
            var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
        }
        var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
        return (zeroPad + datePartValue).slice(-tokenLength);
    });

    return formatString;
}

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

DateToString('Sun May 11,2014', 'MM/DD/yy');
DateToString('Sun May 11,2014', 'yyyy.MM.dd');
DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');

अच्छा साफ और टिप्पणी समाधान। फिर भी मैं पहले तर्क के बारे में उलझन में हूं, जिसे चुपचाप एक नई तारीख से बदल दिया जाता है, यदि मान्य तिथि के रूप में मान्यता प्राप्त नहीं है। मैं इसके बजाय 2 वें तर्क के रूप में इस "ऑप्शनल डिफॉल्ट वैल्यू" को डालूंगा, और किसी प्रकार के अपवाद को वापस कर सकता है (प्रारूप में मान्यता प्राप्त नहीं होने की स्थिति में एक साधारण "अमान्य दिनांक प्रारूप" स्ट्रिंग वापस कर सकता है), ताकि त्रुटि स्पष्ट रूप से दिखाई दे। परीक्षक / उपयोगकर्ता
Balmipour

1

यह मेरे लिए वांछित प्रारूप में वर्तमान तिथि प्राप्त करने के लिए काम किया (YYYYMMDD HH: MM: SS):

var d = new Date();

var date1 = d.getFullYear() + '' +
            ((d.getMonth()+1) < 10 ? "0" + (d.getMonth() + 1) : (d.getMonth() + 1)) +
            '' +
            (d.getDate() < 10 ? "0" + d.getDate() : d.getDate());

var time1 = (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) +
            ':' +
            (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) +
            ':' +
            (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());

print(date1+' '+time1);

1

किसी पुस्तकालय की आवश्यकता नहीं है

बस शुद्ध जावास्क्रिप्ट।

नीचे दिया गया उदाहरण आज से पिछले दो महीनों में मिलता है:

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))


खतरनाक। उस स्थिति में आप टाइमजोन ऑफसेट की उपेक्षा करते हैं।
मैक्सेंस51

1

PHP संगत दिनांक प्रारूप

यहां एक छोटा फ़ंक्शन है जो PHP फ़ंक्शन के समान पैरामीटर ले सकता है date()और जावास्क्रिप्ट में दिनांक / समय स्ट्रिंग लौटा सकता है।

ध्यान दें कि PHP से सभी दिनांक () प्रारूप विकल्प समर्थित नहीं हैं। आप partsलापता प्रारूप-टोकन बनाने के लिए ऑब्जेक्ट का विस्तार कर सकते हैं

/**
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"

सार

यहाँ formatDate()फ़ंक्शन के एक अद्यतन संस्करण और अतिरिक्त उदाहरणों के साथ एक जिस्ट है : https://gist.github.com/stracker-phil/c7b68ea0b1d5bb97970a6a3dc66e099


0

फिर भी उत्तरों का एक और संयोजन। अच्छी तरह से पठनीय, लेकिन थोड़ा लंबा।

function getCurrentDayTimestamp() {
  const d = new Date();

  return new Date(
    Date.UTC(
      d.getFullYear(),
      d.getMonth(),
      d.getDate(),
      d.getHours(),
      d.getMinutes(),
      d.getSeconds()
    )
  // `toIsoString` returns something like "2017-08-22T08:32:32.847Z"
  // and we want the first part ("2017-08-22")
  ).toISOString().slice(0, 10);
}

0

यदि तिथि को सभी समय क्षेत्रों में समान होना चाहिए, उदाहरण के लिए डेटाबेस से कुछ मूल्य का प्रतिनिधित्व करता है, तो दिन, महीने के यूटीसी संस्करणों का उपयोग करना सुनिश्चित करें, जावास्क्रिप्ट तिथि ऑब्जेक्ट पर पूरी तरह से कार्य करें क्योंकि यह यूटीसी समय में प्रदर्शित होगा और निश्चित समय क्षेत्रों में ऑफ-बाय-वन त्रुटियों से बचें।

इससे भी बेहतर, इस प्रकार के स्वरूपण के लिए Moment.js तिथि पुस्तकालय का उपयोग करें।


0

मैंने समित सतपुते की प्रतिक्रिया को इस प्रकार संशोधित किया :

var newstartDate = new Date();
// newstartDate.setDate(newstartDate.getDate() - 1);
var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format
console.log(startDate);


0

हैशमैप डेटा से अधिकतम और न्यूनतम तिथि का प्रारूप और पता लगाना:

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
  let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));


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

0

दिनांक स्ट्रिंग को रिफ़ॉर्मेट करना काफी सरल है, जैसे

var s = 'Sun May 11,2014';

function reformatDate(s) {
  function z(n){return ('0' + n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.split(/\W+/);
  return b[3] + '-' +
    z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
    z(b[2]);
}

console.log(reformatDate(s));

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