Если у вас есть дата «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.
Попробуйте ... Вернитесь, если вы получите сообщение об ошибке/возникли проблемы –
Не UTC = GMT + 0hs? – Gabriel
Да, я нахожусь в Великобритании, и времена те же, но я подумал, может быть, он захочет конвертировать в другой часовой пояс –