Я пишу приложение, где мне нужно получить время эпохи на стороне сервера, используя ColdFusion 8, работающую на Windows Server 2008 и на стороне клиента, используя javascript (тестирование в Google Chrome). Проблема в том, что время эпохи, созданное ColdFusion, на один час ниже, чем у javascript. Я проверил, что настройки даты и времени верны как на стороне клиента, так и на стороне сервера.
Вот как я устанавливаю временную метку с ColdFusion:
<cfset cfEpoch = DateDiff("s", "January 1 1970 00:00", DateConvert("Local2utc", now()))>
И вот как я устанавливаю его с помощью javascript:
var jsEpoch = Math.round(new Date().getTime()/1000.0);
Эпоха javascript соответствует той, что находится на этом сайте (http://www.epochconverter.com/), что имеет смысл, потому что они используют тот же метод, что и я с помощью. Эпоха ColdFusion отстает на один час. Здесь я попытался разобраться в этом:
<cfset localDate = now()>
<cfset utcDate = DateConvert("Local2utc", localDate)>
<cfset epoch = DateDiff("s", "January 1 1970 00:00", utcDate)>
<cfoutput>
Local Date: #localDate# <br>
UTC Date: #utcDate# <br>
Epoch: #epoch#
</cfoutput>
Этот код выводит:
Local Date: {ts '2013-04-30 17:44:56'}
UTC Date: {ts '2013-04-30 21:44:56'}
Epoch: 1367354696
Так что я в недоумении. Правильно указаны значения даты и даты по локальной дате. Похоже, что единственное объяснение заключается в том, что функция DateDiff() работает некорректно, но я тестировал ее с другими датами, и, похоже, она работает нормально. Я полагаю, что могу просто добавить 3600 к значению эпохи, которое он генерирует, но я бы предпочел не делать этого, не зная, почему я получаю неправильное значение в первую очередь. Кто-нибудь видит, что мне здесь не хватает?