javascript - जावास्क्रिप्ट दिनांक को कैसे प्रारूपित करें




date date-format (20)

मैं 10-Aug-2010 रूप में प्रिंट करने के लिए जावास्क्रिप्ट दिनांक ऑब्जेक्ट को कैसे प्रारूपित कर सकता हूं?


कस्टम स्वरूपण समारोह:

निश्चित प्रारूपों के लिए, एक साधारण कार्य नौकरी बनाता है। निम्नलिखित उदाहरण अंतर्राष्ट्रीय प्रारूप YYYY-MM-DD उत्पन्न करता है:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

ओपी प्रारूप इस प्रकार उत्पन्न किया जा सकता है:

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

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

एक अधिक उन्नत फ़ंक्शन प्रारूप पैरामीटर के आधार पर कॉन्फ़िगर करने योग्य आउटपुट उत्पन्न कर सकता है।

यदि एक स्वरूपण समारोह लिखना बहुत लंबा है, तो वहां बहुत सारे पुस्तकालय हैं जो इसके आसपास हैं। कुछ अन्य उत्तरों पहले से ही उन्हें गिनती करते हैं। लेकिन बढ़ती निर्भरताओं में भी इसका मुकाबला है।

मानक ईसीएमएस्क्रिप्ट प्रारूपण कार्य:

ईसीएमएस्क्रिप्ट के हाल के संस्करणों के बाद से, Date वर्ग में कुछ विशिष्ट प्रारूपण कार्य हैं:

toDateString : कार्यान्वयन निर्भर, केवल तारीख दिखाओ।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString : आईएसओ 8601 दिनांक और समय दिखाएं।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON : जेएसओएन के लिए स्ट्रिंगफायर।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString : कार्यान्वयन निर्भर, लोकेल प्रारूप में एक तिथि।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString : कार्यान्वयन निर्भर, लोकेल प्रारूप में एक तिथि और समय।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString : कार्यान्वयन निर्भर, लोकेल प्रारूप में एक समय।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

टूस्ट्रिंग : तिथि के लिए जेनेरिक टूस्ट्रिंग।

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

नोट: उन स्वरूपणों से कस्टम आउटपुट उत्पन्न करना संभव है>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

उदाहरण स्निपेट्स:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));


ToLocaleDateString () का उपयोग करें;

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

वे मान जिन्हें आप विभिन्न कुंजी के लिए विकल्पों में पारित कर सकते हैं:

  1. दिन:
    दिन का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", "2-अंक" हैं।
  2. काम करने के दिन:
    सप्ताहांत का प्रतिनिधित्व।
    संभावित मूल्य "संकीर्ण", "छोटा", "लंबा" हैं।
  3. साल:
    वर्ष का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", "2-अंक" हैं।
  4. महीना:
    महीने का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", "2-अंक", "संकीर्ण", "छोटा", "लंबा" हैं।
  5. घंटे:
    घंटे का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", "2-अंक" हैं।
  6. मिनट: मिनट का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", "2-अंक" हैं।
  7. दूसरा:
    दूसरे का प्रतिनिधित्व।
    संभावित मान "संख्यात्मक", 2-अंक "हैं।

ये सभी कुंजी वैकल्पिक हैं। आप अपनी आवश्यकताओं के आधार पर विकल्पों के मूल्यों को बदल सकते हैं।

विभिन्न भाषाओं के लिए:

  1. "एन-यूएस": अंग्रेजी के लिए
  2. "हाय-इन": हिंदी के लिए
  3. "जे-जेपी": जापानी के लिए

आप अधिक भाषा विकल्प का उपयोग कर सकते हैं।

उदाहरण के लिए

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US"));
console.log(today.toLocaleDateString("en-US",options));
console.log(today.toLocaleDateString("hi-IN", options));

// Outputs will be -
9/17/2016
Saturday, September 17, 2016
शनिवार, 17 सितंबर 2016

आप उसी उद्देश्य के लिए toLocaleString () विधि का भी उपयोग कर सकते हैं। केवल अंतर यह है कि यह फ़ंक्शन उस समय प्रदान करता है जब आप कोई विकल्प नहीं देते हैं।

// Example
9/17/2016, 1:21:34 PM

संदर्भ:

ToLocaleString के लिए ()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

ToLocaleDateString () के लिए

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString


Sugar.js में दिनांक ऑब्जेक्ट के लिए उत्कृष्ट एक्सटेंशन हैं, जिसमें Date.format विधि भी शामिल है।

दस्तावेज़ीकरण के उदाहरण:

Date.create().format('{Weekday} {Month} {dd}, {yyyy}');

Date.create().format('{12hr}:{mm}{tt}')

आधुनिक ब्राउज़रों (*) में , आप बस यह कर सकते हैं:

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

आउटपुट अगर आज निष्पादित (जनवरी 24, 2016):

'24-Jan-2016'

(*) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString , "आधुनिक ब्राउज़र" का अर्थ है क्रोम 24+, फ़ायरफ़ॉक्स 2 9 +, इंटरनेट एक्सप्लोरर 11, एज 12+, ओपेरा 15+ और सफारी रात का निर्माण


इस तरह मैंने अपने एनपीएम प्लगइन के लिए कार्यान्वित किया

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var Days = [
  "Sunday", "Monday", "Tuesday", "Wednesday",
  "Thursday", "Friday", "Saturday"
];

var formatDate = function(dt,format){
  format = format.replace('ss', pad(dt.getSeconds(),2));
  format = format.replace('s', dt.getSeconds());
  format = format.replace('dd', pad(dt.getDate(),2));
  format = format.replace('d', dt.getDate());
  format = format.replace('mm', pad(dt.getMinutes(),2));
  format = format.replace('m', dt.getMinutes());
  format = format.replace('MMMM', monthNames[dt.getMonth()]);
  format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
  format = format.replace('MM', pad(dt.getMonth()+1,2));
  format = format.replace(/M(?![ao])/, dt.getMonth()+1);
  format = format.replace('DD', Days[dt.getDay()]);
  format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
  format = format.replace('yyyy', dt.getFullYear());
  format = format.replace('YYYY', dt.getFullYear());
  format = format.replace('yy', (dt.getFullYear()+"").substring(2));
  format = format.replace('YY', (dt.getFullYear()+"").substring(2));
  format = format.replace('HH', pad(dt.getHours(),2));
  format = format.replace('H', dt.getHours());
  return format;
}

pad = function(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

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

function init(){
    var d = new Date();
    var day = d.getDate();
    var x = d.toDateString().substr(4, 3);
    var year = d.getFullYear();
    document.querySelector("#mydate").innerHTML = day + '-' + x + '-' + year;
}
window.onload = init;
<div id="mydate"></div>


किसी भी बाहरी पुस्तकालयों का उपयोग किए बिना जावास्क्रिप्ट समाधान:

var now = new Date()
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
var formattedDate = now.getDate()+"-"+months[now.getMonth()]+"-"+now.getFullYear()
alert(formattedDate)

खैर, मैं जो चाहता था वह आज की तारीख को 2012-06-23 की तरह एक MySQL अनुकूल दिनांक स्ट्रिंग में परिवर्तित करना था, और उस स्ट्रिंग को मेरे प्रश्नों में से एक पैरामीटर के रूप में उपयोग करना था। मुझे मिला सरल समाधान यह है:

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

ध्यान रखें कि उपर्युक्त समाधान आपके टाइमज़ोन ऑफसेट को ध्यान में रखता नहीं है

आप इसके बजाय इस फ़ंक्शन का उपयोग करने पर विचार कर सकते हैं:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

यदि आप इस कोड को दिन के आरंभ / समाप्ति के आसपास निष्पादित कर रहे हैं तो यह आपको सही तिथि देगा।


मुझे लगता है कि आप गैर-मानक दिनांक विधि का उपयोग कर सकते हैं toLocaleFormat(formatString)

प्रारूपस्ट्रिंग: सी में स्ट्रेटटाइम strftime() फ़ंक्शन द्वारा अपेक्षित प्रारूप में एक प्रारूप स्ट्रिंग।

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

संदर्भ:


मैं आपके अनुरोधित प्रारूप को किसी पुस्तकालय का उपयोग करके एक लाइन में नहीं प्राप्त कर सकता हूं और कोई दिनांक विधि नहीं, बस regex:

var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')

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


यदि आप अपने कोड में jQuery UI का उपयोग कर रहे हैं, तो एक formatDate() फ़ंक्शन है जिसे formatDate() कहा जाता है। मैं आज की तारीख को प्रारूपित करने के लिए इसका उपयोग कर रहा हूं:

var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);

आप jQuery UI दस्तावेज़ में स्वरूपण दिनांक के कई अन्य उदाहरण देख सकते हैं।


यदि आपको सादे जावास्क्रिप्ट का उपयोग करके अपनी तिथि को त्वरित रूप से प्रारूपित करने की आवश्यकता है, तो getMonth + 1 उपयोग करें, getMonth + 1 , getHours , getHours और getMinutes :

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

या, यदि आपको शून्य के साथ गद्देदार होने की आवश्यकता है:

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50

सादा जावास्क्रिप्ट छोटे onetimers के लिए सबसे अच्छा पिक है।

दूसरी तरफ, यदि आपको अधिक डेट सामान की आवश्यकता है, तो MomentJS एक अच्छा समाधान है।

उदाहरण के लिए:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

हमारे पास इसके लिए बहुत सारे समाधान हैं, लेकिन मुझे लगता है कि उनमें से सबसे अच्छा क्षण है। जेएस। तो मैं व्यक्तिगत रूप से तारीख और समय के संचालन के लिए Moment.js का उपयोग करने का सुझाव देता हूं।

console.log(moment().format('DD-MMM-YYYY'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>



DateFormatter.formatDate(new Date(2010,7,10), 'DD-MMM-YYYY')

=> 10-Aug-2010

DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')

=> 2017-11-22 19:52:37

DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A')

=> 2 02 Wed Wednesday, 2 02 Feb February, 05 2005, 3 03 3 03, 4 04, 5 05, am AM

var DateFormatter = {
  monthNames: [
    "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ],
  dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  formatDate: function (date, format) {
    var self = this;
    format = self.getProperDigits(format, /d+/gi, date.getDate());
    format = self.getProperDigits(format, /M+/g, date.getMonth() + 1);
    format = format.replace(/y+/gi, function (y) {
      var len = y.length;
      var year = date.getFullYear();
      if (len == 2)
        return (year + "").slice(-2);
      else if (len == 4)
        return year;
      return y;
    })
    format = self.getProperDigits(format, /H+/g, date.getHours());
    format = self.getProperDigits(format, /h+/g, self.getHours12(date.getHours()));
    format = self.getProperDigits(format, /m+/g, date.getMinutes());
    format = self.getProperDigits(format, /s+/gi, date.getSeconds());
    format = format.replace(/a/ig, function (a) {
      var amPm = self.getAmPm(date.getHours())
      if (a === 'A')
        return amPm.toUpperCase();
      return amPm;
    })
    format = self.getFullOr3Letters(format, /d+/gi, self.dayNames, date.getDay())
    format = self.getFullOr3Letters(format, /M+/g, self.monthNames, date.getMonth())
    return format;
  },
  getProperDigits: function (format, regex, value) {
    return format.replace(regex, function (m) {
      var length = m.length;
      if (length == 1)
        return value;
      else if (length == 2)
        return ('0' + value).slice(-2);
      return m;
    })
  },
  getHours12: function (hours) {
    // https://.com/questions/10556879/changing-the-1-24-hour-to-1-12-hour-for-the-gethours-method
    return (hours + 24) % 12 || 12;
  },
  getAmPm: function (hours) {
    // https://.com/questions/8888491/how-do-you-display-javascript-datetime-in-12-hour-am-pm-format
    return hours >= 12 ? 'pm' : 'am';
  },
  getFullOr3Letters: function (format, regex, nameArray, value) {
    return format.replace(regex, function (s) {
      var len = s.length;
      if (len == 3)
        return nameArray[value].substr(0, 3);
      else if (len == 4)
        return nameArray[value];
      return s;
    })
  }
}

console.log(DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'));
console.log(DateFormatter.formatDate(new Date(), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));
console.log(DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));

प्रारूप विवरण आईओनिक फ्रेमवर्क लेता था (समर्थन नहीं करता Z, यूटीसी टाइमज़ोन ऑफ़सेट)

पूरी तरह से परीक्षण नहीं किया गया



के अद्भुत नियमित अभिव्यक्ति समाधान से प्रेरित , अचानक मुझे यह सिर-विभाजन विचार था:

var D = Date().toString().split(" ");
document.getElementById("demo").innerHTML = D[2] + "-" + D[1] + "-" + D[3];


मैं निम्नलिखित का उपयोग करता हूं। यह आसान है और ठीक काम करता है।

 var dtFormat = require('dtformat');
   var today = new Date();
   dtFormat(today, "dddd, mmmm dS, yyyy, h:MM:ss TT");

या यह:

var now = new Date()
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
var formattedDate = now.getDate()  + "-" + months[now.getMonth()] + "-" + now.getFullYear()
alert(formattedDate)





time-format