@Ritesh WARNING: toLocaleTimeString() may behave differently based on region / location.Измерьте дважды, отрежьте один раз.
заброшенная корзина
@AbandonedCart это на самом деле поговорка?
Гилберт-V
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.
Заброшенная корзина
Я никогда не привыкну к тому, как чертовски запутанно пытается работать с простыми датами в JavaScript. Ash
Также вы дважды объявили переменную «hours», но сделали strTime случайным глобальным. Это не очень элегантно, но, похоже, это правильная техника с использованием нативных методов.
Jon Z
Привет, вы можете объяснить мне, что вы делаете с этим: минуты = минуты <10? «0» + минуты: минуты;
Бальц
2
@Balz Если минут меньше 10 (например, 16:04), то этот оператор добавляет строку «0», так что форматированный вывод будет «4:04 PM» вместо «4: 4 PM». Обратите внимание, что в процессе, минуты изменяются с числа на строку.
Калеб Белл
7
Я предпочитаю это, minutes = ('0'+minutes).slice(-2);а не minutes = minutes < 10 ? '0'+minutes : minutes;
Виньеш
1
Решение @Vignesh для минут лучше, потому что если вы делаете то, что предложенное 21:00:00 становится 9: 000. Виньеш дает вам правильные минуты как: 00. Если бы вы использовали вышеупомянутое решение, вам также пришлось бы учитывать 00. (Минуты> 0 && минут <10)? «0» + минуты: минуты;
Робби Смит
201
Если вы просто хотите показать часы, то ..
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
Люди не используют Regex достаточно. Это сработало для меня без добавления предложений библиотеки jquery / microsoftajax выше.
uadrive
То, что было бы регулярным выражением было бы иметь конечный ноль в начале часа, если бы это была одна цифра. Скажем, в вашем первом примере 8:12 вечера это будет 8:12 вечера?
RADXack
1
@ 404 это то же самое, ([\d]+:[\d]{2})это та часть, которая нас интересует. Используйте двоеточие (:) в качестве разделителя, и мы видим, что первая часть - это [\d]+. Плюс означает один или несколько. Таким образом, он ищет одну или несколько цифр (включая ноль. Если бы вы должны были гарантировать, что там есть ноль, это было бы (0[\d]:[\d]{2}). Теперь это читает, ищите 0 плюс еще одну цифру, затем двоеточие, а затем остальные.
Стив Таубер
1
console.log (new Date (). toLocaleTimeString (). replace (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 «)); Чтобы узнать текущее время
моджахеды
35
Если вам не нужно печатать am / pm, я нашел следующее хорошее и лаконичное:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
<!DOCTYPE html><html><body><p>Click the button to display the date and time as a string.</p><buttononclick="myFunction()">Try it</button><buttononclick="fullDateTime()">Try it2</button><pid="demo"></p><pid="demo2"></p><script>function myFunction(){var d =newDate();var n = d.toLocaleString([],{ hour:'2-digit', minute:'2-digit'});
document.getElementById("demo").innerHTML = n;}function fullDateTime(){var d =newDate();var n = d.toLocaleString([],{ hour12:true});
document.getElementById("demo2").innerHTML = n;}</script></body></html>
Должно быть меньше или равно для расчета часа, иначе полдень отображается как 0. Итак: var hour = (d.getHours () <= 12). По-прежнему имеет проблему с полуночи, поэтому вы должны проверить, если ноль, а затем установить на 12 тоже.
Райан
11
использование dateObj.toLocaleString([locales[, options]])
Вариант 1 - Использование локалей
var date =newDate();
console.log(date.toLocaleString('en-US'));
Вариант 2 - Использование параметров
var options ={ hour12:true};
console.log(date.toLocaleString('en-GB', options));
Примечание: поддерживается во всех браузерах, кроме Safari Atm
ответы со временем устаревают. Не стесняйтесь редактировать и обновлять!
Geo
Это фактически сделает строку похожей 1:54 PM CDT. Для удаления CDTизмените свое регулярное выражение на следующее .replace(/:\d+ |\CDT/g, ' '). Хотя CDT - это только мой часовой пояс. Если у вас другой часовой пояс, я полагаю, вам нужно будет перейти на этот код зоны.
sadmicrowave
Вывод toLocaleTimeString зависит от реализации, поэтому не везде одинаково надежно.
RobG
9
В современных браузерах используйте Intl.DateTimeFormatи форсируйте 12-часовой формат с параметрами:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
Использование defaultбудет учитывать локаль браузера по умолчанию, если вы добавите больше параметров, но все равно будет выводить 12-часовой формат
Вы можете определить утра или вечера с помощью этого простого кода
var today=newDate();var noon=newDate(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);var ampm =(today.getTime()<noon.getTime())?'am':'pm';
<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 =newDate();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 PMfunction twelve_hour_time(h){if(h >12){
h = h -12;
AM_or_PM =" PM";}return h;}
startTime();</script>
<script>
time =function(){var today =newDate();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 =newDate();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 =newDate();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 < 10return i;}</script>
Когда 12:00 вечера, переменный ток будет "вечера". Таким образом, с 12:00 до 23:00 часов будут 12: 23, в которых хранится значение «pm», а для других var ampm будет хранить значение «am». Надеюсь, вы понимаете.
Md Juyel Rana
Привет, Юйель! Действительно, когда часы больше 12, значение будет PM. Но вопрос таков: «Как вы отображаете дату и время JavaScript в 12-часовом формате AM / PM?» - вам нужно помочь OP конвертировать все время в формат AM / PM. Например, 14:30 будет 14:30.
WARNING: toLocaleTimeString() may behave differently based on region / location.
Измерьте дважды, отрежьте один раз.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.Ответы:
источник
minutes = ('0'+minutes).slice(-2);
а неminutes = minutes < 10 ? '0'+minutes : minutes;
Если вы просто хотите показать часы, то ..
Выход: 7 утра
Если вы хотите показать протокол, а затем ...
Выход: 7:23
источник
toLocaleString
поддерживается только в IE11 +.'numeric'
с'2-digit'
.Вы также можете использовать что-то вроде date.js :
источник
Вот способ использования регулярных выражений:
Это создает 3 подходящие группы:
([\d]+:[\d]{2})
- час: минута(:[\d]{2})
- секунды(.*)
- пространство и период (Период - официальное название AM / PM)Затем отображаются 1-я и 3-я группы.
ВНИМАНИЕ: toLocaleTimeString () может вести себя по-разному в зависимости от региона / местоположения.
источник
([\d]+:[\d]{2})
это та часть, которая нас интересует. Используйте двоеточие (:) в качестве разделителя, и мы видим, что первая часть - это[\d]+
. Плюс означает один или несколько. Таким образом, он ищет одну или несколько цифр (включая ноль. Если бы вы должны были гарантировать, что там есть ноль, это было бы(0[\d]:[\d]{2})
. Теперь это читает, ищите 0 плюс еще одну цифру, затем двоеточие, а затем остальные.Если вам не нужно печатать am / pm, я нашел следующее хорошее и лаконичное:
Это основано на ответе @ bbrame.
источник
Насколько я знаю, лучший способ добиться этого без расширений и сложного кодирования выглядит так:
Javascript AM / PM формат
Я нашел это, проверяя этот вопрос.
Как мне использовать .toLocaleTimeString () без отображения секунд?
источник
Я предлагаю использовать момент js для работы с датой и временем.
https://momentjs.com/docs/#/displaying/format/
источник
Пожалуйста, найдите решение ниже
источник
использование
dateObj.toLocaleString([locales[, options]])
Вариант 1 - Использование локалей
Вариант 2 - Использование параметров
Примечание: поддерживается во всех браузерах, кроме Safari Atm
источник
Краткий RegExp для en-US:
источник
1:54 PM CDT
. Для удаленияCDT
измените свое регулярное выражение на следующее.replace(/:\d+ |\CDT/g, ' ')
. Хотя CDT - это только мой часовой пояс. Если у вас другой часовой пояс, я полагаю, вам нужно будет перейти на этот код зоны.В современных браузерах используйте
Intl.DateTimeFormat
и форсируйте 12-часовой формат с параметрами:Использование
default
будет учитывать локаль браузера по умолчанию, если вы добавите больше параметров, но все равно будет выводить 12-часовой форматисточник
Используйте Moment.js для этого
Используйте приведенные ниже коды в JavaScript при использовании moment.js
format()
Метод возвращает дату в формате конкретного.источник
Проверьте Datejs . Их встроенные средства форматирования могут сделать это: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
Это очень удобная библиотека, особенно если вы планируете делать другие вещи с объектами даты.
источник
Я считаю, что здесь все работает нормально.
и пример плунжера здесь
источник
источник
Вот еще один простой и очень эффективный способ:
источник
Вы можете определить утра или вечера с помощью этого простого кода
источник
источник
источник
источник
Вот мое решение
источник
Или просто сделайте следующий код:
источник
Короткая и приятная реализация:
источник
попробуй это
источник