2016-10-03 3 views
0

настоящее время у меня var dateNow как '10 1 2016' и var timeNow как '05:15:50' и был в состоянии преобразовать в UTC как так var dateTimeNow = Date(dateNow + timeNow + ' UTC');Javascript: Можете ли вы преобразовать свое местное время в GMT, например, новую дату (localTime + 'GMT')?

теперь хотел бы, чтобы преобразовать его в GMT, так что это так просто, как только изменение ' UTC' к ' GMT'? Так что, var dateTimeNow = Date(dateNow + timeNow + ' GMT');?

+0

Попробуйте ... Вернитесь, если вы получите сообщение об ошибке/возникли проблемы –

+0

Не UTC = GMT + 0hs? – Gabriel

+0

Да, я нахожусь в Великобритании, и времена те же, но я подумал, может быть, он захочет конвертировать в другой часовой пояс –

ответ

0

Если у вас есть дата «10 1 2016» (которая, как мне кажется, 10 января 2016 года) и время, подобное «05:15:50», вы можете создать дату для этого времени в часовом поясе с помощью нулевое смещение как форматированная строка ISO 8601: «2016-01-10T15: 15: 50Z» или «2016-01-10T15: 15: 50 + 0000».

Строка расширенного формата ISO 8601 должна корректно анализироваться в современных реализациях, однако в целом нецелесообразно анализировать строки с конструктором Date (или Date.parse, они эквивалентны для синтаксического анализа) из-за различий в реализациях , Если у вас один формат, он может быть проанализирован в нескольких строках. В качестве альтернативы, используйте одну из многих библиотек Date, у которых есть синтаксический анализатор и форматировщик, и не забывайте всегда давать парсеру формат строки, которую вы хотите проанализировать.

Что касается преобразования местного времени в UTC, вы должны знать смещение часового пояса по местному времени, иначе у вас нет привязки для его настройки.

Чтобы «преобразовать» локальную дату, как 10 января 2016 года в 05:15:50 по Гринвичу (где «местный» является то, что системное время хост-зона устанавливается в) является простым, как:

var d = new Date(2016,0,10,5,15,50); 
 
console.log('Local: ' + d.toLocaleString() + 
 
      '\nUTC: ' + d.toISOString());

Обратите внимание, что toLocaleString полностью зависит от реализации, часто игнорирует настройки браузера и системы и производит различный результат в различных реализациях.

Это позволяет хосту учитывать текущие настройки часового пояса системы и применять их при создании даты. Объекты Date ECMAScript имеют значение времени, основанное на UTC, поэтому они по своей сути являются UTC.

+0

извините, но 10 1 2016 - это фактически 1 октября 2016. И UTC должен быть таким же, как GMT? –

+0

[* UTC *] (https://en.wikipedia.org/wiki/Coordinated_Universal_Time) является стандартом времени, [* GMT *] (https://en.wikipedia.org/wiki/Greenwich_Mean_Time) является часовым поясом , Для всех практических целей они являются одинаковыми (нулевыми) смещениями, однако UTC является международным стандартом, поэтому его следует использовать, за исключением случаев, когда явно требуется GMT. Например. можно ожидать, что человек в часовом поясе GMT ​​соблюдает летнее время, когда он применяется, тогда как в UTC нет.Нет стандарта для имен часовых поясов или сокращений (хотя Z используется для UTC), поэтому фактическое смещение используется для строк даты и времени, соответствующих стандарту ISO 8601. – RobG

+0

так UTC более широко применяется и рекомендуется использовать? –

Смежные вопросы