为什么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>

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...