为什么ColdFusion纪元时间落后于javascript纪元时间一小时?

Spa*_*iph 12 javascript coldfusion date epoch coldfusion-8

我正在编写一个应用程序,我需要使用在Windows Server 2008上运行的ColdFusion 8和客户端使用javascript(在Google Chrome中进行测试)来获取服务器端的纪元时间.问题是ColdFusion生成的纪元时间比javascript生成的纪元时间晚一个小时.我已经验证了客户端和服务器端的日期/时间设置都是正确的.

这就是我用ColdFusion设置时间戳的方法:

<cfset cfEpoch = DateDiff("s", "January 1 1970 00:00", DateConvert("Local2utc", now()))>
Run Code Online (Sandbox Code Playgroud)

这就是我用javascript设置它的方式:

var jsEpoch = Math.round(new Date().getTime()/1000.0);
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

该代码输出:

Local Date: {ts '2013-04-30 17:44:56'} 
UTC Date: {ts '2013-04-30 21:44:56'} 
Epoch: 1367354696
Run Code Online (Sandbox Code Playgroud)

所以我很茫然.本地日期和UTC日期值都是正确的.似乎唯一的解释是DateDiff()函数不能正常工作,但我已经用其他日期测试了它,它似乎工作正常.我想我可以在它生成的纪元值上添加3600但是我不想在不知道为什么我首先得到一个不正确的值的情况下这样做.有谁看到我在这里失踪了?

Gav*_*kin 9

写一个小脚本你可能会注意到一些非常奇怪的东西

这就是它为我输出的内容.

  • 1367360584 - Javascript时间
  • 1367360594 - Epoch秒(将大纪元转换为当地时间)
  • 1367356994 - Epoch seconds(将本地时间转换为UTC)

因此,将纪元转换为当地时间是有道理的,但反过来却不是.这也在CF8上运行,所以如果你将Epoch转换为本地时间,它似乎做得对.

试试看.

<script>
var jsEpoch = Math.round(new Date().getTime()/1000.0);
document.write(jsEpoch + ' - Javascript time <br>');
</script>


<cfset TheDate = now()>
<cfoutput>
#DateDiff("s",DateConvert("utc2Local", "January 1 1970 00:00"), TheDate)# - Epoch seconds (convert Epoch to local time)<br>
#DateDiff("s", "January 1 1970 00:00", DateConvert("Local2utc", TheDate))# - Epoch seconds (convert local time to UTC)
</cfoutput>
Run Code Online (Sandbox Code Playgroud)