我正在编写一个应用程序,我需要使用在 Windows Server 2008 上运行的 ColdFusion 8 和客户端使用 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
所以我很茫然。本地日期和 UTC 日期值均正确。似乎唯一的解释是 DateDiff() 函数不能正常工作,但我已经用其他日期对其进行了测试,它似乎工作正常。我想我可以将 3600 添加到它生成的纪元值上,但我宁愿不这样做,因为我不知道为什么我一开始就得到了不正确的值。有人看到我在这里缺少什么吗?