为什么ColdFusion时代在JavaScript时代之后一个小时?

前端之家收集整理的这篇文章主要介绍了为什么ColdFusion时代在JavaScript时代之后一个小时?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个应用程序,我需要在服务器端使用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",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到它产生的时代价值,但我宁愿不这样做,而不知道为什么我得到一个错误的价值在第一位.有没有人看到我在这里失踪?

解决方法

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

这是为我输出的.

> 1367360584 – Javascript的时间
> 1367360594 – Epoch秒(将Epoch转换为当地时间)
> 1367356994 – Epoch秒(将当地时间转换为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",TheDate))# - Epoch seconds (convert local time to UTC)
</cfoutput>

猜你在找的JavaScript相关文章