आप 12 घंटे AM / PM प्रारूप में जावास्क्रिप्ट डेटाटाइम कैसे प्रदर्शित करते हैं?


306

आप 12 घंटे के प्रारूप (AM / PM) में जावास्क्रिप्ट डेटाटाइम ऑब्जेक्ट कैसे प्रदर्शित करते हैं?


3
अपना समय बर्बाद मत करो stackoverflow.com/a/17538193/3541385 अपने काम कर रहे ..
रितेश

2
@ रीतेश ने WARNING: toLocaleTimeString() may behave differently based on region / location.दो बार नापा , एक बार काटा।
परित्यक्त गाड़ी

@AndonedCart वास्तव में एक कहावत है?
गिल्बर्ट-वी

1
@ gilbert-v One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.यह प्रश्न संभवतः Google पर बेहतर पूछा गया है, हालांकि।
कार्ट को छोड़ दिया

मुझे कभी भी आदत नहीं होगी कि कैसे जावास्क्रिप्ट में सरल तारीखों के साथ काम करने की कोशिश की जाती है। 😠
ashleedawg

जवाबों:


545

function formatAMPM(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return strTime;
}

console.log(formatAMPM(new Date));


3
साथ ही आपने "घंटे" चर को दो बार घोषित किया लेकिन "स्ट्रेटटाइम" एक आकस्मिक वैश्विक बना दिया। यह बहुत सुंदर नहीं है, लेकिन यह देशी तरीकों का उपयोग करके उचित तकनीक है।
जॉन z

नमस्ते, क्या आप मुझे इससे दूर कर सकते हैं कि आप इसके साथ क्या कर रहे हैं: मिनट = मिनट <10? '0' + मिनट: मिनट;
बाल्ज़

2
@Balz यदि मिनट 10 से कम है (उदाहरण 16:04), तो यह कथन स्ट्रिंग "0" को जोड़ता है, ताकि स्वरूपित आउटपुट "4: 4 PM" के बजाय "4:04 PM" हो। ध्यान दें कि इस प्रक्रिया में, संख्या एक संख्या से स्ट्रिंग में बदल जाती है।
कालेब बेल

7
मैं इसके minutes = ('0'+minutes).slice(-2);बजाय इसे पसंद करता हूंminutes = minutes < 10 ? '0'+minutes : minutes;
विग्नेश

1
@ मिनट के लिए विग्नेश समाधान बेहतर है क्योंकि यदि आप एक सुझाव दे रहे हैं 21:00:00 9: 000 हो जाता है। विग्नेश आपको सही मिनट देता है जैसे: ००। यदि आप उपरोक्त समाधान का उपयोग करने के लिए थे, तो आपको 00 के लिए भी खाता होगा। (टकसाल> 0 && मिनट <10)? '0' + मिनट: मिनट;
रॉबी स्मिथ

201

अगर आप सिर्फ घंटे दिखाना चाहते हैं तो ..

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', hour12: true })
);  

आउटपुट: सुबह 7 बजे

यदि आप मिनटों को भी दिखाना चाहते हैं तो ...

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
);

आउटपुट: 7:23 पूर्वाह्न


घंटे, मिनट और AM / PM के बारे में क्या?
पुनर्मिलन

3
toLocaleStringकेवल IE11 + पर समर्थित है।
नियोलिस्क

फरवरी 2018 तक क्रोम नियोलिस्क पर इसका काम करना ठीक है - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
lfender6445


@HumbleDolt आप के 'numeric'साथ भ्रमित हो सकता है '2-digit'
hon2a

55

आप date.js जैसी किसी चीज़ का उपयोग करने पर भी विचार कर सकते हैं :

<html>
<script type="text/javascript" src="http://www.datejs.com/build/date.js"></script>

<script>
   (function ()
   {
      document.write(new Date().toString("hh:mm tt"));
   })();
</script>
</html>


45

यहाँ regex का उपयोग करने का एक तरीका है:

console.log(new Date('7/10/2013 20:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))
console.log(new Date('7/10/2013 01:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))

इससे 3 मिलान समूह बनते हैं:

  • ([\d]+:[\d]{2}) - घंटा: मिनट
  • (:[\d]{2}) - सेकंड
  • (.*) - स्थान और अवधि (अवधि AM / PM का आधिकारिक नाम है)

फिर यह 1 और 3 के समूह को प्रदर्शित करता है।

चेतावनी: toLocaleTimeString () क्षेत्र / स्थान के आधार पर अलग-अलग व्यवहार कर सकता है।


3
लोग रेगेक्स का पर्याप्त उपयोग नहीं करते हैं। यह मेरे लिए ऊपर दिए गए jquery / microsoftajax लाइब्रेरी सुझावों को जोड़े बिना काम किया।
uadrive

यदि यह एकल अंक होता तो प्रति घंटे की शुरुआत में रेगेक्स शून्य से पीछे चलकर क्या होता। 8:12 PM के अपने पहले उदाहरण में कहेंगे कि यह 08:12 PM होगा?
RADXack

1
@ 404 यह वही है, ([\d]+:[\d]{2})जिस भाग में हम रुचि रखते हैं। कोलोन का उपयोग करें (:) विभाजक के रूप में और हम देखते हैं कि पहला भाग है [\d]+। प्लस का अर्थ है एक या अधिक। तो यह एक या अधिक अंक (शून्य सहित) की तलाश कर रहा है। यदि आपको शून्य की गारंटी देनी है, तो यह होगा (0[\d]:[\d]{2})। यह अब पढ़ता है, 0 से अधिक एक और अंक, फिर बृहदान्त्र, फिर बाकी की तलाश करें।
स्टीव टाउबर

1
कंसोल.लॉग (नई तिथि () .LocaleTimeString) ()। (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (। *) / /, "$ 1% 3। ")); वर्तमान समय पाने के लिए
मुजफ्फर

35

यदि आपको सुबह / शाम प्रिंट करने की आवश्यकता नहीं है, तो मुझे निम्नलिखित अच्छे और संक्षिप्त लगते हैं:

var now = new Date();
var hours = now.getHours() % 12 || 12;  // 12h instead of 24h, with 12 instead of 0. 

यह @ bbrame के उत्तर पर आधारित है।


3
आधी रात के लिए @koolinc यह दिखाता है 12. मुझे यकीन नहीं है कि वांछित व्यवहार और क्या होगा।
रट्रे

मुझे सही साबित होना है। मेरे देश में 24-घंटे की घड़ी का उपयोग किया जाता है, इसलिए मैं 12-घंटे की घड़ी से परिचित नहीं हूं। वास्तव में मध्यरात्रि 12:00 बजे है।
KooiInc

16

जहां तक ​​मुझे पता है, बिना विस्तार और जटिल कोडिंग के इसे प्राप्त करने का सबसे अच्छा तरीका है:

     date.toLocaleString([], { hour12: true});

जावास्क्रिप्ट एएम / पीएम प्रारूप

<!DOCTYPE html>
<html>
<body>
    <p>Click the button to display the date and time as a string.</p>

    <button onclick="myFunction()">Try it</button>
    <button onclick="fullDateTime()">Try it2</button>
    <p id="demo"></p>
    <p id="demo2"></p>
    <script>
        function myFunction() {
            var d = new Date();
            var n = d.toLocaleString([], { hour: '2-digit', minute: '2-digit' });
            document.getElementById("demo").innerHTML = n;
        }
        function fullDateTime() {
            var d = new Date();          
            var n = d.toLocaleString([], { hour12: true});
            document.getElementById("demo2").innerHTML = n;
        }
    </script>
</body>
</html>

मैंने इस प्रश्न की जाँच की।

सेकंड प्रदर्शित किए बिना मैं .toLocaleTimeString () का उपयोग कैसे करूं?


16

मेरा सुझाव दिनांक और समय संचालन के लिए उपयोग क्षण js है।

https://momentjs.com/docs/#/displaying/format/

console.log(moment().format('hh:mm a'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>


12

कृपया नीचे दिए गए समाधान का पता लगाएं

var d = new Date();
var amOrPm = (d.getHours() < 12) ? "AM" : "PM";
var hour = (d.getHours() < 12) ? d.getHours() : d.getHours() - 12;
return   d.getDate() + ' / ' + d.getMonth() + ' / ' + d.getFullYear() + ' ' + hour + ':' + d.getMinutes() + ' ' + amOrPm;

घंटे की गणना के लिए इससे कम या बराबर होना चाहिए, दोपहर बाद के रूप में 0. शो: var घंटे = (d.getHours () <= 12)। अभी भी आधी रात के साथ समस्या है, इसलिए आपको यह देखना होगा कि शून्य तो 12 पर भी सेट है।
रयान

11

उपयोग dateObj.toLocaleString([locales[, options]])

विकल्प 1 - स्थानों का उपयोग करना

var date = new Date();
console.log(date.toLocaleString('en-US'));

विकल्प 2 - विकल्पों का उपयोग करना

var options = { hour12: true };
console.log(date.toLocaleString('en-GB', options));

नोट: सभी ब्राउज़रों लेकिन सफारी एटीएम पर समर्थित



9

एन-अमेरिका के लिए लघु RegExp:

var d = new Date();
d = d.toLocaleTimeString().replace(/:\d+ /, ' '); // current time, e.g. "1:54 PM"

यह नवीनतम सफारी और फ़ायरफ़ॉक्स ब्राउज़र पर काम नहीं करता है, समय अभी भी 24 घंटे के प्रारूप का उपयोग करता है
यूथेर

1
समय बीतने के साथ उत्तर पुराने हो जाते हैं। संपादित करने और अद्यतन करने के लिए स्वतंत्र महसूस करें!
जियो

यह वास्तव में स्ट्रिंग की तरह दिखाई देगा 1:54 PM CDTCDTअपने regex को निम्न में बदलने के लिए .replace(/:\d+ |\CDT/g, ' ')। हालांकि, सीडीटी सिर्फ मेरा समयक्षेत्र है। यदि आपके पास एक अलग टाइमज़ोन है तो मुझे लगता है कि आपको उस ज़ोन कोड को बदलने की आवश्यकता होगी।
14:59 पर दुखद माइक्रोवेव

ToLocaleTimeString का आउटपुट कार्यान्वयन निर्भर है, इसलिए हर जगह समान रूप से एक ही प्रारूप नहीं है।
रॉबजी

9

में आधुनिक ब्राउज़रों, उपयोग Intl.DateTimeFormatऔर विकल्पों के साथ बल 12hr प्रारूप:

    let now = new Date();

    new Intl.DateTimeFormat('default',
        {
            hour12: true,
            hour: 'numeric',
            minute: 'numeric'
        }).format(now);

    // 6:30 AM

defaultयदि आप अधिक विकल्प जोड़ते हैं, तो ब्राउज़र के डिफ़ॉल्ट लोकेल का उपयोग करना , अभी भी 12hr प्रारूप का उत्पादन करेगा।


इसका उपयोग करने के लिए, एक स्ट्रिंग को नया स्ट्रिंग असाइन करें उदा: परिणाम दें = नया Intl.DateTi .... सतर्क (परिणाम);
स्कॉट नेरी

7

इसके लिए Moment.js का उपयोग करें

पल का उपयोग करते समय जावास्क्रिप्ट में नीचे दिए गए कोड का उपयोग करें

H, HH       24 hour time
h, or hh    12 hour time (use in conjunction with a or A)

format()विधि विशिष्ट प्रारूप में दिनांक देता है।

moment(new Date()).format("YYYY-MM-DD HH:mm"); // 24H clock
moment(new Date()).format("YYYY-MM-DD hh:mm A"); // 12H clock (AM/PM)
moment(new Date()).format("YYYY-MM-DD hh:mm a"); // 12H clock (am/pm)

5

Datejs की जाँच करें । उनके द्वारा तैयार किए गए फ़ॉर्मेटर्स ऐसा कर सकते हैं: http://code.google.com/p/datejs/wiki/APIDocumentation#toflring

यह वास्तव में आसान पुस्तकालय है, खासकर यदि आप तारीख वस्तुओं के साथ अन्य चीजें करने की योजना बना रहे हैं।


" लाइब्रेरी एक्स का उपयोग करें " जैसे उत्तर सहायक नहीं हैं। वे हालांकि टिप्पणियों के रूप में अच्छे हो सकते हैं।
RobG

1
@RobG: जैसा कि आप देख सकते हैं कि यह उत्तर लिखने के बाद मुझे काफी समय हो गया है। मुझे अब इसका एहसास है।
क्रिस लाप्लांट

4

मैं फव्वारा यह यहाँ ठीक काम कर रहा है।

var date_format = '12'; /* FORMAT CAN BE 12 hour (12) OR 24 hour (24)*/


var d       = new Date();
var hour    = d.getHours();  /* Returns the hour (from 0-23) */
var minutes     = d.getMinutes();  /* Returns the minutes (from 0-59) */
var result  = hour;
var ext     = '';

if(date_format == '12'){
    if(hour > 12){
        ext = 'PM';
        hour = (hour - 12);

        if(hour < 10){
            result = "0" + hour;
        }else if(hour == 12){
            hour = "00";
            ext = 'AM';
        }
    }
    else if(hour < 12){
        result = ((hour < 10) ? "0" + hour : hour);
        ext = 'AM';
    }else if(hour == 12){
        ext = 'PM';
    }
}

if(minutes < 10){
    minutes = "0" + minutes; 
}

result = result + ":" + minutes + ' ' + ext; 

console.log(result);

और यहाँ plunker उदाहरण


4
<script>
var todayDate = new Date();
var getTodayDate = todayDate.getDate();
var getTodayMonth =  todayDate.getMonth()+1;
var getTodayFullYear = todayDate.getFullYear();
var getCurrentHours = todayDate.getHours();
var getCurrentMinutes = todayDate.getMinutes();
var getCurrentAmPm = getCurrentHours >= 12 ? 'PM' : 'AM';
getCurrentHours = getCurrentHours % 12;
getCurrentHours = getCurrentHours ? getCurrentHours : 12; 
getCurrentMinutes = getCurrentMinutes < 10 ? '0'+getCurrentMinutes : getCurrentMinutes;
var getCurrentDateTime = getTodayDate + '-' + getTodayMonth + '-' + getTodayFullYear + ' ' + getCurrentHours + ':' + getCurrentMinutes + ' ' + getCurrentAmPm;
alert(getCurrentDateTime);
</script>

2
12 के साथ घंटे का मॉड्यूल प्राप्त करना उत्कृष्ट है! यह शून्य होने से रोकता है जब यह
12AM है

3

यहाँ एक और तरीका है जो सरल है, और बहुत प्रभावी है:

        var d = new Date();

        var weekday = new Array(7);
        weekday[0] = "Sunday";
        weekday[1] = "Monday";
        weekday[2] = "Tuesday";
        weekday[3] = "Wednesday";
        weekday[4] = "Thursday";
        weekday[5] = "Friday";
        weekday[6] = "Saturday";

        var month = new Array(11);
        month[0] = "January";
        month[1] = "February";
        month[2] = "March";
        month[3] = "April";
        month[4] = "May";
        month[5] = "June";
        month[6] = "July";
        month[7] = "August";
        month[8] = "September";
        month[9] = "October";
        month[10] = "November";
        month[11] = "December";

        var t = d.toLocaleTimeString().replace(/:\d+ /, ' ');

        document.write(weekday[d.getDay()] + ',' + " " + month[d.getMonth()] + " " + d.getDate() + ',' + " " + d.getFullYear() + '<br>' + d.toLocaleTimeString());

    </script></div><!-- #time -->

1

आप इस सरल कोड के साथ am या pm निर्धारित कर सकते हैं

var today=new Date();
var noon=new Date(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);
var ampm = (today.getTime()<noon.getTime())?'am':'pm';

0

var d = new Date();
var hours = d.getHours() % 12;
  hours = hours ? hours : 12;
    var test = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][(d.getMonth() + 1)] + " " + 
    ("00" + d.getDate()).slice(-2) + " " + 
    d.getFullYear() + " " + 
    ("00" + hours).slice(-2) + ":" + 
    ("00" + d.getMinutes()).slice(-2) + ":" + 
    ("00" + d.getSeconds()).slice(-2) + ' ' + (d.getHours() >= 12 ? 'PM' : 'AM'); 
    
document.getElementById("demo").innerHTML = test;
<p id="demo" ></p>


0
<h1 id="clock_display" class="text-center" style="font-size:40px; color:#ffffff">[CLOCK TIME DISPLAYS HERE]</h1>



<script>
            var AM_or_PM = "AM";

            function startTime(){

                var today = new Date();
                var h = today.getHours();
                var m = today.getMinutes();
                var s = today.getSeconds();

                h = twelve_hour_time(h);
                m = checkTime(m);
                s = checkTime(s);



                document.getElementById('clock_display').innerHTML =
                    h + ":" + m + ":" + s +" "+AM_or_PM;
                var t = setTimeout(startTime, 1000);

            }

            function checkTime(i){

                if(i < 10){
                    i = "0" + i;// add zero in front of numbers < 10
                }
                return i;
            }

            // CONVERT TO 12 HOUR TIME. SET AM OR PM
            function twelve_hour_time(h){

                if(h > 12){
                    h = h - 12;
                    AM_or_PM = " PM";
                }
                return h;

            }

            startTime();

        </script>

0
function getDateTime() {
  var now = new Date();
  var year = now.getFullYear();
  var month = now.getMonth() + 1;
  var day = now.getDate();

  if (month.toString().length == 1) {
    month = '0' + month;
  }
  if (day.toString().length == 1) {
    day = '0' + day;
  }

  var hours = now.getHours();
  var minutes = now.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12;
  minutes = minutes < 10 ? '0' + minutes : minutes;
  var timewithampm = hours + ':' + minutes + ' ' + ampm;

  var dateTime = monthNames[parseInt(month) - 1] + ' ' + day + ' ' + year + ' ' + timewithampm;
  return dateTime;
}

0

यहाँ मेरा समाधान है

function getTime() {
var systemDate = new Date();
var hours = systemDate.getHours();
var minutes = systemDate.getMinutes();
var strampm;
if (hours >= 12) {
    strampm= "PM";
} else {
    strampm= "AM";
}
hours = hours % 12;
if (hours == 0) {
    hours = 12;
}
_hours = checkTimeAddZero(hours);
_minutes = checkTimeAddZero(minutes);
console.log(_hours + ":" + _minutes + " " + strampm);
}

function checkTimeAddZero(i) {
if (i < 10) {
    i = "0" + i
}
return i;
}

-1

या बस निम्नलिखित कोड करें:

    <script>
        time = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            m = checkTime(m);
            s = checkTime(s);
            document.getElementById('txt_clock').innerHTML = h + ":" + m + ":" + s;     
            var t = setTimeout(function(){time()}, 0);
        }

        time2 = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            m = checkTime(m);
            s = checkTime(s);
            if (h>12) {
                document.getElementById('txt_clock_stan').innerHTML = h-12 + ":" + m + ":" + s;
            }               
            var t = setTimeout(function(){time2()}, 0);
        }

        time3 = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            if (h>12) {
                document.getElementById('hour_line').style.width = h-12 + 'em'; 
            }
            document.getElementById('minute_line').style.width = m + 'em';  
            document.getElementById('second_line').style.width = s + 'em';  
            var t = setTimeout(function(){time3()}, 0);
        }

        checkTime = function(i) {
            if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
            return i;
        }           
    </script>


-1

एक छोटा और मीठा कार्यान्वयन:

// returns date object in 12hr (AM/PM) format
var formatAMPM = function formatAMPM(d) {
    var h = d.getHours();
    return (h % 12 || 12)
        + ':' + d.getMinutes().toString().padStart(2, '0')
        + ' ' + (h < 12 ? 'A' : 'P') + 'M';
};

-1

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

      var date = new Date();
      var hours = date.getHours();
      var minutes = date.getMinutes();
      var seconds = date.getSeconds();
      var ampm = hours >= 12 ? "pm" : "am";

यह गलत है। घंटे 12 से अधिक हो सकते हैं
उत्सव टी

जब दोपहर 12.00 बजे var ampm "pm" होगा। तो 12.00 PM से 11.00 PM घंटे 12 से 23 बजे होंगे जो "pm" मान को स्टोर करते हैं और दूसरों के लिए, var ampm "value" वैल्यू स्टोर करेंगे। उम्मीद है आप समझ गए होंगे।
एमडी जुएल राणा

हाय जुएल! दरअसल जब घंटे 12 से अधिक होते हैं, तो मूल्य पीएम होगा। लेकिन सवाल यह है कि "आप 12 घंटे AM / PM प्रारूप में जावास्क्रिप्ट डेटाटाइम कैसे प्रदर्शित करते हैं?" - आपको ओपी को पूरे समय को एएम / पीएम प्रारूप में बदलने में मदद करने की आवश्यकता है। उदाहरण के लिए, 14:30 अपराह्न 2:30 बजे होगा।
उत्सव टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.