Я ищу функцию для преобразования даты в одном часовом поясе в другой.
Нужно два параметра,
- дата (в формате "2012/04/10 10:10:30 +0000")
- строка часового пояса ("Азия / Джакарта")
Строка часового пояса описана в http://en.wikipedia.org/wiki/Zone.tab
Есть простой способ сделать это?
javascript
timezone
Ризки Рамадан
источник
источник
Ответы:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
источник
toLocaleString
, но затем он очень неправильно показывает передачу этой строки обратно вDate
конструктор. Это напрашивается на неприятности. Синтаксический анализатор строки даты не обязателен для принятия определенных форматов локали, и ввод будет обрабатываться так, как если бы он находился в местном часовом поясе. Не делай этого. Просто используйте строку вывода из первогоtoLocalString
вызова.Для пользователей moment.js теперь вы можете использовать момент-часовой пояс . Используя его, ваша функция будет выглядеть примерно так:
источник
Date.prototype.toLocaleString
.Похищен бесстыдно у: http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329
эта функция полезна для расчета значения часового пояса путем указания названия города / страны и значения смещения
источник
Большинство настольных (не мобильных) браузеров, за исключением Safari, поддерживают функцию toLocaleString с аргументами, более старые браузеры обычно игнорируют аргументы.
источник
toLocaleStringSupportsLocales()
реализацию, которая позволяет вам надежно проверять поддержку.Хорошо, нашел это!
Я использую часовой пояс-JS . это код:
источник
Если вы не хотите импортировать какую-то большую библиотеку, вы можете просто использовать Intl.DateTimeFormat для преобразования объектов Date в разные часовые пояса.
Смещения, переход на летнее время и изменения в прошлом позаботятся о вас.
источник
toLocaleString
имеет противоречивую реализацию, и это работает начиная с IE11.formatter
объект, вы получаете: `` `Значение параметра 'Азия / Джакарта' для 'timeZone' вне допустимого диапазона. Ожидаемый: ['UTC'] `` `Понял !
Требуется принудительно установить отображаемую дату = дата сервера, не имеет значения локальные настройки (UTC).
Мой сервер GMT-6 -> new Date (). GetTimezoneOffset () = 360.
источник
Вы можете использовать toLocaleString () метод для установки часового пояса.
Для Индии вы можете использовать «Индийский / Рождество», а ниже приведены различные часовые пояса,
источник
toLocaleString
Раствор уже дали 4 года назад .Если вам просто нужно конвертировать часовые пояса я загрузил версию урезанной в момент-часовой пояс только с голой минимальной функциональностью , . Его ~ 1KB + данные:
источник
Установите переменную с указанием года, месяца и дня, разделенных символами «-», плюс «T» и время в формате ЧЧ: мм: сс, за которым следует +01: 00 в конце строки (в моем случае часовой пояс +1). Затем используйте эту строку в качестве аргумента для конструктора даты.
источник
Я должен отметить, что я ограничен в отношении того, какие внешние библиотеки я могу использовать. Moment.js и timezone-js НЕ были вариантом для меня.
У меня есть дата объекта JS в UTC. Мне нужно было получить дату и время от этой даты в определенном часовом поясе («Америка / Чикаго» в моем случае).
В настоящее время UTC на 6 часов опережает Америку / Чикаго. Выход:
источник
new Date();
вернуть местный часовой пояс, а не UTCIf no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings.
Вот мой код, он работает отлично, вы можете попробовать с приведенным ниже демо:
источник
currentDateTimeCentralTimeZone.getHours()
? Без этого он будет работать и будет таким же, как и в ответе на запрос27: stackoverflow.com/a/40809160/1404185Вы можете попробовать это также для конвертации даты и часового пояса в Индию:
источник
Посмотрев вокруг много, включая ссылки с этой страницы, я нашел эту замечательную статью, используя часовой пояс момента:
https://www.webniraj.com/2016/11/23/javascript-using-moment-js-to-display-dates-times-in-users-timezone/
Подводя итог это:
Получить часовой пояс пользователя
Например: часовой пояс: Европа / Лондон
Установите часовой пояс пользователя по умолчанию
Установить пользовательский часовой пояс
Конвертировать дату / время в местный часовой пояс, если исходная дата / время указаны в UTC
Возвращает: вс, 25 декабря 2016 года, 7:00 утра
Конвертировать дату / время в LA Time
Возвращение: суббота, 24 декабря 2016 года, 23:00
Конвертировать из ЛА в Лондон
Возвращает: вс, 25 декабря 2016 года, 15:00
источник
Вы также можете использовать https://www.npmjs.com/package/ctoc_timezone
Он имеет очень простую реализацию и настройку формата.
Изменение формата в toTimeZone:
CtoC.toTimeZone(new Date(),"EST","Do MMM YYYY hh:mm:ss #{EST}");
Вывод :
28th Feb 2013 19:00:00 EST
Вы можете изучить несколько функций в документе.
источник
для этого можно использовать модуль npm timezones.json; он в основном состоит из файла JSON с объектами, содержащими информацию о летнем и смещении, ....
для Азии / Джакарты он сможет вернуть этот объект:
Вы можете найти это здесь:
https://github.com/dmfilipenko/timezones.json
https://www.npmjs.com/package/timezones.json
надеюсь, это полезно
источник
Люди, знакомые с
java.time
пакетом java 8 , илиjoda-time
, вероятно, полюбят нового ребенка в блоке: библиотеку js-joda .устанавливать
пример
В истинной природе Java это довольно многословно, смеется. Но, будучи портированной java-библиотекой, особенно учитывая, что они портировали 1800-е тестовые сценарии, она также, вероятно, работает превосходно точно.
Хронические манипуляции это сложно. Вот почему многие другие библиотеки глючат в крайних случаях. Moment.js, кажется, правильно выбирает часовые пояса, но другие js-библиотеки, которые я видел, в том числе
timezone-js
, не заслуживают доверия.источник
Я недавно сделал это в Typescript:
Я использую формат "en-UK", потому что он простой. Может быть "en-US" или что-то еще работает.
Если первый аргумент - ваш часовой пояс, а secondde - ваш целевой часовой пояс, он возвращает объект Date с правильным смещением.
источник
У меня были проблемы с использованием часового пояса Момент . Я добавляю этот ответ просто так, если кто-то еще сталкивается с той же проблемой. Итак, у меня есть строка
2018-06-14 13:51:00
с датойAPI
. Я знаю, что это хранится вUTC
но строка не говорит сама за себя.Я позволю моментному часовому поясу знать, из какого часового пояса эта дата делает:
Теперь я хотел бы преобразовать его в определенный часовой пояс, выполнив:
источник
Просто установите желаемый часовой пояс страны, и вы можете легко показать в html его обновление с помощью функции SetInteval () через каждую минуту. Функция formatAMPM () управляет 12-часовым форматом и отображением времени AM / PM.
источник
Я не знаю простого способа преобразования объекта даты в любой часовой пояс, но если вы хотите преобразовать его в местный часовой пояс, вы можете просто преобразовать его
Date.prototype.getTime()
в соответствующее количество миллисекунд и обратно.Например,
date.getHours()
теперь вернется15
вместо того,13
если вы, как и я, находитесь в Австрии (а сейчас лето).Я читал, что различные функции datetime могут демонстрировать нестандартное поведение в некоторых браузерах, поэтому сначала проверьте это. Я могу подтвердить, что он работает в Chrome.
источник
Смещение часового пояса для вашего текущего часового пояса
Для моего часового пояса GMT + 10 (Австралия) он вернул -36000
источник
быстрая и грязная ручная смена часов и возврат:
источник