我正在编写一个应用程序,需要在运行在 Windows Server 2008 上的 ColdFusion 8 服务器端和使用 JavaScript 的客户端(在 Google Chrome 中进行测试)获取时代时间。问题是,ColdFusion 生成的时代时间比 JavaScript 生成的晚一个小时。我已经验证了客户端和服务器端的日期/时间设置都是正确的。
这是我如何使用 ColdFusion 设置时间戳的方式:
这是我用JavaScript设置它的方式:
JavaScript纪元与此网站(http://www.epochconverter.com/)匹配,这是有道理的,因为他们使用的方法与我使用的方法相同。ColdFusion纪元落后一个小时。以下是我运行的内容,尝试解决这个问题:
那段代码输出:
这是我如何使用 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添加到它生成的时代值中,但我不想在不知道为什么首先会得到错误值的情况下这样做。有人看到我漏掉了什么吗?