【发布时间】:2013-04-24 22:46:32
【问题描述】:
我正在编写一个应用程序,我需要使用在 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 添加到它生成的 epoch 值,但我宁愿在不知道为什么我首先得到不正确的值的情况下不这样做。有人看到我在这里缺少什么吗?
【问题讨论】:
-
你的 JVM 版本是多少?你在哪个TZ?
标签: javascript date coldfusion coldfusion-8 epoch