Если JavaScript (new Date()).getTime()
запускается из двух разных часовых поясов одновременно, вы получите одно и то же значение?
Будет ли это значение влиять на системное время, установленное на компьютере, на котором работает браузер?
Если JavaScript (new Date()).getTime()
запускается из двух разных часовых поясов одновременно, вы получите одно и то же значение?
Будет ли это значение влиять на системное время, установленное на компьютере, на котором работает браузер?
Да, это повлияло на системное время. Однако, если местное время правильное (для любой часовой зоны, на которую установлен компьютер), она должна быть одинаковой в любом часовом поясе.
В стандарте ECMAScript говорится (§15.9.1.1):
"Время измеряется в ECMAScript в миллисекунд с 01 января 1970 года UTC".
код:
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 час
Вы не получите одинаковое значение - разница между двумя клиентскими браузерами, забирающими их системное время, но если их время настроено нормально, вы должны получить два раза с минимальной разницей с момента получения метки времени с помощью new Date()
, вы можете получить значение UTC (new Date()
возвращает число миллисекунд, сбрасываемое с 1 января 1970 года, и это не изменится), что является универсальным временем и является агностическим.
Скорее всего, всегда будет отклонение между временем, достигнутым между машинами, но (раньше я был не прав) JavaScript Date() принимает по умолчанию часовой пояс UTC.
Обычно, когда время имеет важное значение, лучше всего просто использовать время сервера и применять поправки к часовому поясу к требуемому в выходном файле.
Возможно, вы захотите сделать это, если хотите, чтобы на тот же день, что и ваш сервер, в разных часовых поясах:
var UTC=new Date(Date.UTC(serverYear,serverMonth-1,serverDate,0,0,0,0));