Как вы отображаете дату и время JavaScript в 12-часовом формате AM / PM? - PullRequest
244 голосов
/ 17 января 2012

Как отобразить объект JavaScript datetime в 12-часовом формате (AM / PM)?

Ответы [ 21 ]

444 голосов
/ 17 января 2012

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));
146 голосов
/ 24 апреля 2016

Если вы просто хотите показать часы, то ..

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

50 голосов
/ 17 января 2012

Вы также можете использовать что-то вроде 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>
40 голосов
/ 09 июля 2013

Вот способ использования регулярных выражений:

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)

Затем отображаются первая и третья группы.

ВНИМАНИЕ: toLocaleTimeString () может вести себя по-разному в зависимости от региона / местоположения.

32 голосов
/ 07 января 2014

Если вам не нужно печатать am / pm, я нашел следующее хорошее и лаконичное:

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

Это основано на ответе @ bbrame.

14 голосов
/ 25 января 2017

Насколько я знаю, лучший способ добиться этого без расширений и сложного кодирования - это:

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

Javascript AM / PM Format

<!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 () без отображения секунд?

12 голосов
/ 15 марта 2017

Я предлагаю использовать момент 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>
11 голосов
/ 24 октября 2015

использование 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));

Примечание: поддерживается во всех браузерах, кроме safari atm

9 голосов
/ 07 июня 2018

Пожалуйста, найдите решение ниже

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;
8 голосов
/ 14 августа 2013

Short RegExp для en-US:

var d = new Date();
d = d.toLocaleTimeString().replace(/:\d+ /, ' '); // current time, e.g. "1:54 PM"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...