В настоящее время я пытаюсь отобразить время пользователя без отображения секунд. Есть ли способ, которым я могу сделать это, используя Javascript .toLocaleTimeString ()?
Делать что-то вроде этого:
var date = new Date();
var string = date.toLocaleTimeString();
будет отображать время пользователя с каждой единицей, например, в настоящее время он показывает 3:39:15 вечера. Могу ли я отобразить эту же строку без секунд? (например, 3:39 вечера)
javascript
time
javadog36
источник
источник
hour: "2-digit"
не работает для меня в Chrome 42 , ни FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
возвращается"6:15 AM"
в обоих.[]
чтобы опустить конкретную локаль. Таким образом, вы останетесь в локали пользователей:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Это работает для меня:
источник
Значение, возвращаемое Date.prototype.toLocaleString, зависит от реализации, поэтому вы получаете то, что получаете. Вы можете попытаться проанализировать строку, чтобы удалить секунды, но она может отличаться в разных браузерах, поэтому вам нужно будет учесть все используемые браузеры.
Создать собственный, однозначный формат не сложно, используя методы Date. Например:
источник
С локалями:
источник
Я также искал решение этой проблемы, вот что я в итоге придумал:
Вы можете попробовать это здесь: http://jsfiddle.net/B5Zrx/
\ u200E - это какой-то символ форматирования, который я видел в какой-то версии IE (это метка слева направо в юникоде).
Я предполагаю, что если форматированное время содержит что-то вроде «XX: XX: XX», то это должно быть время с секундами, и я удаляю последнюю часть, если я не нахожу этот шаблон, ничего не меняется. Довольно безопасно, но в некоторых странных обстоятельствах есть риск оставить секунды.
Я просто надеюсь, что не существует локали, которая изменила бы порядок форматированных частей времени (например, сделать это ss: mm: hh). Эта метка слева направо заставляет меня немного нервничать по этому поводу, поэтому я не убираю метку справа налево (\ u202E) - я предпочитаю не находить совпадение в этом случае и оставляю время отформатировано с секундами в таком случае.
источник
toLocaleTimeString()
возвращает, что не может быть правдой для всех языков.Вы можете попробовать это, что работает для моих нужд.
или
источник
:
.Вот функция, которая сделает это, с комментариями, которые объясняют:
Поскольку, как отмечали другие, toLocaleTimeString () может быть реализован по-разному в разных браузерах, этот способ обеспечивает лучший контроль.
Чтобы узнать больше об объекте Javascript Date, это хороший ресурс: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
источник
Я думаю, что на первоначальный вопрос можно легко ответить с помощью чего-то, что пока упускается из виду: простой разрыв строки. Возвращаемое время - текстовая строка, просто разделите ее на разделитель «:» и соберите строку так, как вы хотите. Нет плагинов, нет сложных сценариев. и вот вы идете:
источник
Несмотря на то, что это более старый вопрос, у меня недавно был тот же самый, и я придумал более простое решение, использующее регулярные выражения и функцию замены строк в качестве другой альтернативы (нет необходимости во внешних js-библиотеках или опоре на API-интерфейс интернализации ECMAScript) :
В этом подходе используется просмотр в регулярном выражении для захвата конца строки: ss AM / PM и замена части: ss пробелом, в результате чего остальная часть строки остается нетронутой. (Буквально говорится: «Найдите двоеточие с двумя цифрами и пробелом, за которым следует либо AM, либо PM, и замените двоеточие, две цифры и пробел только пробелом).
Это выражение / подход работает только для en-US и en-US-like Locales. Если вы также хотели получить похожий результат, скажем, с британским английским (en-GB), который не использует AM / PM, необходимо другое регулярное выражение.
Исходя из примера вывода оригинального вопроса, я предполагаю, что они в основном имели дело с американской аудиторией и временной схемой в США.
источник
Просто преобразуйте дату в строку, а затем объедините нужные подстроки из нее.
источник
toLocaleTimeString
возвращает разные строки в каждом браузере в зависимости от настроек локали. Вы не можете полагаться на эти позиции, вы получите другие, возможно, ошибочные результаты в браузерах других людей.