जावास्क्रिप्ट के साथ वर्तमान समय स्वरूपण


101

मैं जावास्क्रिप्ट के साथ एक विशिष्ट प्रारूप में वर्तमान समय प्राप्त करना चाहता हूं।

नीचे दिए गए फ़ंक्शन के साथ और यह मुझे Fri 01 फरवरी 2013 13:56:40 GMT + 1300 (न्यूजीलैंड डेलाइट टाइम) देगा, लेकिन मैं इसे शुक्रवार 2:00 बजे 1 फरवरी 2013 की तरह प्रारूपित करना चाहता हूं

var d = new Date();
var x = document.getElementById("time");
x.innerHTML = d;

बेशक, ऊपर दिए गए कोड में कोई स्वरूपण तर्क नहीं है, लेकिन मैं अभी तक किसी भी "काम करने वाले" प्रारूपकों के साथ नहीं आया हूं।


Node.js के लिए इसी तरह के प्रश्न के लिए stackoverflow.com/questions/10645994/… पर
Ohad Schneider

जवाबों:


160

जावास्क्रिप्ट तिथि में कई तरीके हैं जिनसे आप इसके भागों को निकाल सकते हैं:

getFullYear()- 4 अंकों वाला वर्ष
getMonth()लौटाता है - वर्ष के महीने का प्रतिनिधित्व करते हुए एक शून्य-आधारित पूर्णांक (0-11) देता है।
getDate()- महीने का दिन (1-31) लौटाता है।
getDay()- सप्ताह का दिन (0-6) लौटाता है। ० रविवार है, ६ शनिवार है।
getHours()- दिन का घंटा (0-23) लौटाता है।
getMinutes()- मिनट (0-59) देता है।
getSeconds()- दूसरा (0-59) लौटाता है।
getMilliseconds()- मिलीसेकंड (0-999) देता है।
getTimezoneOffset()- मशीन स्थानीय समय और यूटीसी के बीच मिनटों की संख्या लौटाता है।

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

var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

फिर, उपरोक्त विधियों का उपयोग करके इसे एक साथ रखें:

var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var d = new Date();
var day = days[d.getDay()];
var hr = d.getHours();
var min = d.getMinutes();
if (min < 10) {
    min = "0" + min;
}
var ampm = "am";
if( hr > 12 ) {
    hr -= 12;
    ampm = "pm";
}
var date = d.getDate();
var month = months[d.getMonth()];
var year = d.getFullYear();
var x = document.getElementById("time");
x.innerHTML = day + " " + hr + ":" + min + ampm + " " + date + " " + month + " " + year;
<span id="time"></span>

मेरे पास एक दिनांक प्रारूप फ़ंक्शन है जिसे मैं अपने मानक पुस्तकालय में शामिल करना चाहता हूं। यह एक प्रारूप स्ट्रिंग पैरामीटर लेता है जो वांछित आउटपुट को परिभाषित करता है। प्रारूप तार कर रहे हैं शिथिल के आधार पर नेट कस्टम दिनांक और समय प्रारूप तार । आपके द्वारा निर्दिष्ट प्रारूप के लिए निम्न प्रारूप स्ट्रिंग काम करेगी "dddd h:mmtt d MMM yyyy":।

var d = new Date();
var x = document.getElementById("time");
x.innerHTML = formatDate(d, "dddd h:mmtt d MMM yyyy");

डेमो: jsfiddle.net/BNkkB/1

यहाँ मेरी पूर्ण तिथि प्रारूपण कार्य है:

function formatDate(date, format, utc) {
    var MMMM = ["\x00", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    var MMM = ["\x01", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var dddd = ["\x02", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var ddd = ["\x03", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

    function ii(i, len) {
        var s = i + "";
        len = len || 2;
        while (s.length < len) s = "0" + s;
        return s;
    }

    var y = utc ? date.getUTCFullYear() : date.getFullYear();
    format = format.replace(/(^|[^\\])yyyy+/g, "$1" + y);
    format = format.replace(/(^|[^\\])yy/g, "$1" + y.toString().substr(2, 2));
    format = format.replace(/(^|[^\\])y/g, "$1" + y);

    var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
    format = format.replace(/(^|[^\\])MMMM+/g, "$1" + MMMM[0]);
    format = format.replace(/(^|[^\\])MMM/g, "$1" + MMM[0]);
    format = format.replace(/(^|[^\\])MM/g, "$1" + ii(M));
    format = format.replace(/(^|[^\\])M/g, "$1" + M);

    var d = utc ? date.getUTCDate() : date.getDate();
    format = format.replace(/(^|[^\\])dddd+/g, "$1" + dddd[0]);
    format = format.replace(/(^|[^\\])ddd/g, "$1" + ddd[0]);
    format = format.replace(/(^|[^\\])dd/g, "$1" + ii(d));
    format = format.replace(/(^|[^\\])d/g, "$1" + d);

    var H = utc ? date.getUTCHours() : date.getHours();
    format = format.replace(/(^|[^\\])HH+/g, "$1" + ii(H));
    format = format.replace(/(^|[^\\])H/g, "$1" + H);

    var h = H > 12 ? H - 12 : H == 0 ? 12 : H;
    format = format.replace(/(^|[^\\])hh+/g, "$1" + ii(h));
    format = format.replace(/(^|[^\\])h/g, "$1" + h);

    var m = utc ? date.getUTCMinutes() : date.getMinutes();
    format = format.replace(/(^|[^\\])mm+/g, "$1" + ii(m));
    format = format.replace(/(^|[^\\])m/g, "$1" + m);

    var s = utc ? date.getUTCSeconds() : date.getSeconds();
    format = format.replace(/(^|[^\\])ss+/g, "$1" + ii(s));
    format = format.replace(/(^|[^\\])s/g, "$1" + s);

    var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
    format = format.replace(/(^|[^\\])fff+/g, "$1" + ii(f, 3));
    f = Math.round(f / 10);
    format = format.replace(/(^|[^\\])ff/g, "$1" + ii(f));
    f = Math.round(f / 10);
    format = format.replace(/(^|[^\\])f/g, "$1" + f);

    var T = H < 12 ? "AM" : "PM";
    format = format.replace(/(^|[^\\])TT+/g, "$1" + T);
    format = format.replace(/(^|[^\\])T/g, "$1" + T.charAt(0));

    var t = T.toLowerCase();
    format = format.replace(/(^|[^\\])tt+/g, "$1" + t);
    format = format.replace(/(^|[^\\])t/g, "$1" + t.charAt(0));

    var tz = -date.getTimezoneOffset();
    var K = utc || !tz ? "Z" : tz > 0 ? "+" : "-";
    if (!utc) {
        tz = Math.abs(tz);
        var tzHrs = Math.floor(tz / 60);
        var tzMin = tz % 60;
        K += ii(tzHrs) + ":" + ii(tzMin);
    }
    format = format.replace(/(^|[^\\])K/g, "$1" + K);

    var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
    format = format.replace(new RegExp(dddd[0], "g"), dddd[day]);
    format = format.replace(new RegExp(ddd[0], "g"), ddd[day]);

    format = format.replace(new RegExp(MMMM[0], "g"), MMMM[M]);
    format = format.replace(new RegExp(MMM[0], "g"), MMM[M]);

    format = format.replace(/\\(.)/g, "$1");

    return format;
};

बहुत बहुत धन्यवाद। यद्यपि मेरे अंतिम कोड को थोड़ा ट्वीक की आवश्यकता थी, आपकी अंतर्दृष्टि ने मदद की।
सियोंग ली

मैं दिनांक = "2016/03/01 11:00" को दिनांक = "Sat Mar 01 2016 11:00:00 GMT + 0530 (IST)"
विशाल सिंह

MMMM[0]इंडेक्स 0 पर गैर-मुद्रण योग्य वर्ण के बजाय सही महीने का नाम कैसे वापस करता है ? यह नहीं होना चाहिए MMMM[M]? क्या मैं सिर्फ गूंगा हूं? (कोई बात नहीं। यह इसे गैर-मुद्रण योग्य वर्ण पर सेट करता है, जिसे बाद में टकराव से बचने के लिए बदल देता है)
डेनग्राफिक्स

190

आप कोशिश करना चाह सकते हैं

var d = new Date();
d.toLocaleString();       // -> "2/1/2013 7:37:08 AM"
d.toLocaleDateString();   // -> "2/1/2013"
d.toLocaleTimeString();  // -> "7:38:05 AM"

प्रलेखन


1
आपका तरीका मेरे लिए काम क्यों नहीं कर रहा है? d.toLocaleTimeString()और d.toLocaleTimeString()काम नहीं कर रहे हैं।
afzalex

@afzalex का मतलब है कि आपको कोई रिटर्न नहीं मिल रहा है?
ये लिन आंग

हाँ। मुझे toLocaleTimeString()toLocaleTimeString()
बजे

afzalex इसे आज़माएँ: नई तारीख ()। toLalealeString ();
ब्लूबेरी

कंसोल.लॉग (नई तिथि ()। toLalealeString ()); // 9/27/2015, 2:52:18 अपराह्न
ब्लूबेरी

37

2017 अपडेट : तारीखों और समय को प्रारूपित करने के लिए toLocaleDateString और toLocaleTimeString का उपयोग करें । इन विधियों के लिए दिया गया पहला पैरामीटर एक स्थानीय मान है, जैसे कि एन-यू । दूसरा पैरामीटर, जहां मौजूद है, फॉर्मेटिंग विकल्पों को निर्दिष्ट करता है, जैसे कि कार्यदिवस के लिए लंबा फॉर्म।

let date = new Date();  
let options = {  
    weekday: "long", year: "numeric", month: "short",  
    day: "numeric", hour: "2-digit", minute: "2-digit"  
};  

console.log(date.toLocaleTimeString("en-us", options)); 

आउटपुट: बुधवार, 25 अक्टूबर, 2017, 8:19 बजे

कृपया अधिक जानकारी के लिए नीचे दिए गए लिंक को देखें।

दिनांक और समय स्ट्रिंग्स (जावास्क्रिप्ट)


2
इस समय - इस प्रश्न के पहले उत्तर के चार साल बाद - यह अब सबसे सुविधाजनक और लचीला समाधान है, और इस प्रश्न का उत्तर है। इसे वर्तमान (AD 2018) अभ्यास :-) के उदाहरण के रूप में उच्चतर प्रचारित किया जाना चाहिए
जोकेम शुल्नेक्लोपर

फटा हुआ। @ थॉर्टन का स्ट्रैपटाइम का पोर्ट अधिक लचीला दिखता है। उदाहरण के लिए, toLocalTimeString4 तारीख शैलियों की पेशकश करता है full long medium short, और शायद उन शब्दों का क्या मतलब है कहीं परिभाषित किया गया है। इस बीच, strftime सकता है (शायद) उनमें से किसी से मेल खाते हैं और कई और अधिक। दूसरी ओर, toLocalTimeStringसमय क्षेत्र का समर्थन करता है। मुझे उम्मीद है कि इसमें समय क्षेत्र शामिल हैं जो दिन के उजाले की बचत के समय का उपयोग करते हैं ...
कप्तान 3

14

आप स्ट्रैफ़ाइम के मेरे पोर्ट का उपयोग कर सकते हैं :

/* 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://stackoverflow.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 || nYear%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;
  });
}

नमूना उपयोग:

// Returns "Thursday 4:45pm 15 Sep 2016"
strftime('%A %l:%M%P %e %b %Y');

// You can optionally pass it a Date object
// Returns "Friday 2:00pm 1 Feb 2013"
strftime('%A %l:%M%P %e %b %Y', new Date('Feb 1, 2013 2:00 PM'));

नवीनतम कोड यहां उपलब्ध है: https://github.com/thdoan/strftime


यह कमाल का है। बहुत बहुत धन्यवाद।
सदाबहार

7

दिनांक वर्ग के इंटर्नल्स को देखें और आप देखेंगे कि आप सभी बिट्स (तिथि, माह, वर्ष, घंटा, आदि) निकाल सकते हैं।

http://www.w3schools.com/jsref/jsref_obj_date.asp

Fri 23:00 1 Feb 2013कोड की तरह कुछ के लिए :

date = new Date();

weekdayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var dateString = weekdayNames[date.getDay()] + " " 
    + date.getHours() + ":" + ("00" + date.getMinutes()).slice(-2) + " " 
    + date.getDate() + " " + monthNames[date.getMonth()] + " " + date.getFullYear();

console.log(dateString);

**** 3 डाउनवोटर्स को खुश रखने के लिए 2019-05-29 संशोधित


9
w3schools महान नहीं है। W3fools देखें । बेहतर संदर्भ स्रोतों में एमडीएन और एमएसडीएन शामिल हैं
gilly3

दिनांक # getDay एक पूर्णांक देता है, कार्यदिवस का नाम नहीं। इसके अलावा, imho MDN डेट ऑब्जेक्ट के बारे में जल्दी से बात पाने में बदतर करता है, इसलिए मुझे समझ में नहीं आता है कि क्यों असमानता की आवश्यकता है।
निंजाक्सोर 21

इसके साथ समस्या date.getMinutes()यह है कि यह एक एकल अंक देता है जब मिनट 10 से कम होते हैं, जिसके परिणामस्वरूप अधिक सामान्य "10:04 am" के बजाय "10: 4 am" जैसे समय होते हैं।
जोकेम शुल्नेक्लोपर

@JochemSchulenklopper ने मिनटों पर एक अग्रणी शून्य प्रदर्शित करने के लिए गैर-दिनांक कोड जोड़ा
ली मीडोर

@Ninjaxor किसी संख्या को स्ट्रिंग में बदलने के लिए गैर-दिनांक से संबंधित कोड जोड़ा गया। यदि आप अंग्रेजी नाम चाहते हैं तो यह काम करना चाहिए।
ली मीडोर

4

रुचि रखने वालों के लिए कई बेहतरीन पुस्तकालय हैं

वास्तव में इन दिनों की आवश्यकता नहीं होनी चाहिए कि आप अपने स्वयं के प्रारूपण विनिर्देशक का आविष्कार कर सकें।


केवल अक्टूबर 2017 के रूप में उल्लेख करना चाहता था, momentजावास्क्रिप्ट में समय-संबंधित चीजों के लिए वर्तमान मानक है।
shawon191

धन्यवाद @ shawon191 अपडेट के लिए :) हां, momentचट्टानें। d3ने कुछ समय का सामान भी जोड़ा है, इसलिए यदि आप पहले से ही इसका उपयोग कर रहे हैं, तो आप लाइब्रेरी आयात github.com/d3/d3/blob/master/API.md#time-formats-d3-time-format
एसएफ



0

आधार तिथि वर्ग के साथ काम करने के लिए आप एमडीएन को इसके तरीकों के लिए देख सकते हैं ( इस कारण से W3Schools के बजाय) )। वहाँ आप प्रत्येक विधि के बारे में एक अच्छा वर्णन पा सकते हैं जो प्रत्येक एकल तिथि / समय घटक तक पहुँचने के लिए उपयोगी है और एक विधि पदावनत है या नहीं इसके सापेक्ष।

अन्यथा आप Moment.js को देख सकते हैं जो दिनांक और समय प्रसंस्करण के लिए उपयोग करने के लिए एक अच्छा पुस्तकालय है। आप इसे दिनांक और समय (जैसे कि पार्सिंग, स्वरूपण, i18n, आदि) में हेरफेर करने के लिए उपयोग कर सकते हैं।


0
function formatTime(date){

  d = new Date(date);
  var h=d.getHours(),m=d.getMinutes(),l="AM";
  if(h > 12){
    h = h - 12;
  }
  if(h < 10){
    h = '0'+h;
  }
  if(m < 10){
    m = '0'+m;
  }
  if(d.getHours() >= 12){
    l="PM"
  }else{
    l="AM"
  }

  return h+':'+m+' '+l;

}

उपयोग और परिणाम:

var formattedTime=formatTime(new Date('2020 15:00'));
// Output: "03:00 PM"

0

इस वास्तविक mysql शैली के लिए नीचे इस फ़ंक्शन का उपयोग करें: 2019/02/28 15:33:12

  • अगर आप क्लिक करें
  • 'रन कोड स्निपेट' बटन नीचे
  • यह आपके सरल रीयलटाइम डिजिटल घड़ी उदाहरण को दिखाएगा। डेमो कोड स्निपेट के नीचे दिखाई देगा।

function getDateTime() {
        var now     = new Date(); 
        var year    = now.getFullYear();
        var month   = now.getMonth()+1; 
        var day     = now.getDate();
        var hour    = now.getHours();
        var minute  = now.getMinutes();
        var second  = now.getSeconds(); 
        if(month.toString().length == 1) {
             month = '0'+month;
        }
        if(day.toString().length == 1) {
             day = '0'+day;
        }   
        if(hour.toString().length == 1) {
             hour = '0'+hour;
        }
        if(minute.toString().length == 1) {
             minute = '0'+minute;
        }
        if(second.toString().length == 1) {
             second = '0'+second;
        }   
        var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second;   
         return dateTime;
    }

    // example usage: realtime clock
    setInterval(function(){
        currentTime = getDateTime();
        document.getElementById("digital-clock").innerHTML = currentTime;
    }, 1000);
<div id="digital-clock"></div>


0

ISO8601 (उदाहरण: HH: MM: SS, 07:55:55, या 18:50:30) क्रोम पर:

नई तिथि (Date.now ())। toTimeString ()। पदार्थ (0,8);

किनारे पर :

नई तिथि (Date.now ()) .LocaleTimeString ();


-2
function startTime() {
    var today = new Date(),
        h = checkTime(((today.getHours() + 11) % 12 + 1)),
        m = checkTime(today.getMinutes()),
        s = checkTime(today.getSeconds());
    document.getElementById('demo').innerHTML = h + ":" + m + ":" + s;
    t = setTimeout(function () {
        startTime()
    }, 500);
}
startTime();

}) ();

05:12:00


किसी भी तरह से आपका जवाब ओपी को जवाब नहीं देता है।
Sain18ошƒаӽ

चेकटाइम फ़ंक्शन क्या है?
वेइजिंग जे लिन लिन

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