Если javascript "(новая дата()). GetTime()" запускается из двух разных часовых поясов
Если JavaScript (new Date()).getTime()
запускается из двух разных часовых поясов одновременно, вы получите одно и то же значение?
Будет ли это значение влиять на системное время, установленное на компьютере, на котором работает браузер?
Ответы
Ответ 1
Да, это повлияло на системное время. Однако, если местное время правильное (для любой часовой зоны, на которую установлен компьютер), она должна быть одинаковой в любом часовом поясе.
В стандарте ECMAScript говорится (§15.9.1.1):
"Время измеряется в ECMAScript в миллисекунд с 01 января 1970 года UTC".
Ответ 2
код:
var today = new Date();
console.log(today);
var t = today.getTime();
console.log(t);
Мой компьютер в Великобритании:
Sat Sep 21 2013 03:45:20 GMT+0100 (GMT Daylight Time)
1379731520112
Мой VPS:
Sat, 21 Sep 2013 02:44:31 GMT
1379731471743
Разница между значениями getTime составляет 48,369 миллисекунд (48 секунд) не в синхронизации, а не с разницей в 1 час
Ответ 3
Вы не получите одинаковое значение - разница между двумя клиентскими браузерами, забирающими их системное время, но если их время настроено нормально, вы должны получить два раза с минимальной разницей с момента получения метки времени с помощью new Date()
, вы можете получить значение UTC (new Date()
возвращает число миллисекунд, сбрасываемое с 1 января 1970 года, и это не изменится), что является универсальным временем и является агностическим.
Ответ 4
Скорее всего, всегда будет отклонение между временем, достигнутым между машинами, но (раньше я был не прав) JavaScript Date() принимает по умолчанию часовой пояс UTC.
Обычно, когда время имеет важное значение, лучше всего просто использовать время сервера и применять поправки к часовому поясу к требуемому в выходном файле.
Ответ 5
Возможно, вы захотите сделать это, если хотите, чтобы на тот же день, что и ваш сервер, в разных часовых поясах:
var UTC=new Date(Date.UTC(serverYear,serverMonth-1,serverDate,0,0,0,0));