С сервера я получаю переменную datetime в этом формате: 6/29/2011 4:52:48 PM
и это время в формате UTC. Я хочу преобразовать его в время браузера текущего пользователя, используя JavaScript.
Как это можно сделать с помощью JavaScript или jQuery?
С сервера я получаю переменную datetime в этом формате: 6/29/2011 4:52:48 PM
и это время в формате UTC. Я хочу преобразовать его в время браузера текущего пользователя, используя JavaScript.
Как это можно сделать с помощью JavaScript или jQuery?
Ответы:
Добавьте «UTC» к строке перед преобразованием ее в дату в JavaScript:
источник
!
Остерегайтесь!
_ … разбора строк даты с помощью конструктора Date (и Date.parse, они эквивалентны) настоятельно не рекомендуется из-за различий и несоответствий в браузере… (что, вероятно, было еще более верно в 2011 году)На мой взгляд, серверы всегда должны возвращать дату и время в стандартизированном формате ISO 8601 .
Больше информации здесь:
В этом случае сервер вернется,
'2011-06-29T16:52:48.000Z'
что будет напрямую передано в объект JS Date.localDate
Будет находиться в правом местное время, в моем случае будет через два часа (время DK).Вам действительно не нужно делать весь этот анализ, который только усложняет вещи, если вы согласны с тем, какой формат ожидать от сервера.
источник
DateTime
объект,.toString("o")
который возвращает строку в формате ISO-8601, как показано выше. msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx В JavaScript этоnew Date().toISOString()
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Это универсальное решение:
Использование:
Отображение даты на основе локальных настроек клиента:
источник
Вы должны получить (UTC) смещение (в минутах) клиента:
А затем добавьте корреспондента или вычтите время, которое вы получите от сервера.
Надеюсь это поможет.
источник
Для меня вышеуказанные решения не сработали.
С IE преобразование даты и времени в местное время по UTC немного сложнее. Для меня дата-время из веб-API - это то, что
'2018-02-15T05:37:26.007'
я хотел конвертировать в соответствии с местным часовым поясом, поэтому я использовал приведенный ниже код в JavaScript.источник
Поместите эту функцию в вашу голову:
Затем создайте следующее для каждой даты в теле своей страницы:
Чтобы удалить GMT и часовой пояс, измените следующую строку:
источник
Это работает для меня:
источник
После нескольких других постов, опубликованных здесь, без хороших результатов, мне показалось, что это работает:
И это работает, чтобы пойти противоположным путем, от локальной даты до UTC:
источник
new Date(+date + date.getTimezoneOffset() * 6e4)
. ;-)Добавьте часовой пояс в конце, в этом случае «UTC»:
после этого используйте семейства функций toLocale () * для отображения даты в правильной локали
источник
В ответе Мэтта отсутствует тот факт, что летнее время может быть разным между Date () и датой, которую нужно преобразовать - вот мое решение:
И результаты в отладчике:
источник
Используйте это для преобразования UTC и местного времени и наоборот.
источник
Это упрощенное решение, основанное на ответе Адоржана Принца:
Использование:
источник
Если вы не против,
moment.js
и ваше время в UTC, просто используйте следующее:если ваше время не в utc, а в любой другой известной вам локали, используйте следующую команду:
если ваше время уже указано локально, используйте следующее:
источник
Мне показалось самым простым использование
(я думал, что первой строки может быть достаточно, но есть часовые пояса, которые отключены в долях часов)
источник
new Date('date string')
, а затем добавил эти две строки, и, похоже, он возвращается с временем, полностью основанным на временной метке сервера UTC с изменениями, сделанными, чтобы это соответствовало местному времени пользователя. Мне тоже нужно беспокоиться о странных часовых поясах с долями в час ... Не уверен, что он работает постоянно все время ...Строка даты JSON (сериализованная в C #) выглядит как «2015-10-13T18: 58: 17».
В угловых, (вслед за Хулвей) сделайте
localdate
фильтр:Затем отобразите местное время как:
источник
Используя
YYYY-MM-DD hh:mm:ss
формат:Для преобразования из
YYYY-MM-DD hh:mm:ss
формата убедитесь, что ваша дата соответствует формату ISO 8601 .Важные вещи на заметку
T
, пробел не будет работать в некоторых браузерах+hh:mm
, использование строки для часового пояса (например, «UTC») не будет работать во многих браузерах.+hh:mm
представляют смещение от часового пояса UTC.источник
@Adorojan's
ответ почти правильный. Но добавление смещения некорректно, так как значение смещения будет отрицательным, если дата браузера опережает время по Гринвичу и наоборот. Ниже приведено решение, с которым я пришел, и оно прекрасно работает для меня:источник
Для меня это хорошо работает
источник
Я отвечаю на это, если какая-либо функция хочет, чтобы отображалось время конвертирования в определенный элемент id и применялась строка формата даты yyyy-mm-dd, здесь date1 - строка, а id - идентификатор элемента, который будет отображаться в это время.
я знаю, что ответ уже принят, но я попал сюда из-за Google, и я решил получить вдохновение от принятого ответа, поэтому я хотел просто поделиться им, если кому-то нужно.
источник
Основываясь на ответе @digitalbath, ниже приведена небольшая функция для получения метки времени UTC и отображения местного времени в данном элементе DOM (с использованием jQuery для этой последней части):
https://jsfiddle.net/moriz/6ktb4sv8/1/
источник
Я написал хороший небольшой скрипт, который берет эпоху UTC и преобразует его в часовой пояс системы клиента и возвращает его в формате д / м / ГЧ: i: s (как функция даты в PHP):
источник
Вы можете использовать момент ,
moment(date).format()
всегда даст результат в местной дате .Бонус , вы можете отформатировать так, как вы хотите. Например,
Для более подробной информации вы можете обратиться на сайт Moment JS
источник
Вы можете сделать это, используя файл moment.js .
Это просто, вы только что упомянули место часового пояса.
Пример: если вы хотите преобразовать дату и время в часовой пояс Азии / Калькутты, вам нужно просто указать название места часового пояса, полученное из moment.js.
источник
Я создал одну функцию, которая конвертирует все часовые пояса в местное время.
Я не использовал getTimezoneOffset (), потому что он не возвращает правильное значение смещения
Требования:
источник
В моем случае мне пришлось искать разницу дат в секундах. Дата была строкой даты в формате UTC, поэтому я преобразовал ее в локальный объект даты. Вот что я сделал:
источник
Для тех, кто посещает - используйте эту функцию, чтобы получить локальный объект даты из строки UTC, должен заботиться о летнем времени и работать на IE, IPhone и т. Д.
Мы разделяем строку (поскольку синтаксический анализ даты JS не поддерживается в некоторых браузерах). Мы получаем разницу от UTC и вычитаем ее из времени UTC, которое дает нам местное время. Так как возвращаемое смещение вычисляется с помощью DST (поправьте меня, если я ошибаюсь), поэтому оно вернет это время в переменную "utc". Наконец вернуть дату объекта.
источник
В Angular я использовал ответ Бена так:
Редактировать: Angular 1.3.0 добавил поддержку UTC для фильтра даты, я еще не использовал его, но это должно быть проще, вот формат:
Angular 1.4.3 Date API
источник