javascript - 为什么 ColdFusion 纪元时间比 javascript 纪元时间晚一小时?

标签 javascript date coldfusion coldfusion-8 epoch

我正在编写一个应用程序,我需要在服务器端使用在 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 添加到它生成的纪元值,但我不想在不知道为什么一开始就得到错误值的情况下这样做。有人看到我在这里遗漏了什么吗?

最佳答案

编写一个小脚本,您可能会注意到一些非常奇怪的事情。

这是它为我输出的。

  • 1367360584 - Javascript 时间
  • 1367360594 - 纪元秒(将纪元转换为本地时间)
  • 1367356994 - 纪元秒(将本地时间转换为 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>

关于javascript - 为什么 ColdFusion 纪元时间比 javascript 纪元时间晚一小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309644/

相关文章:

javascript - 从 xml 响应中获取一些数据来自 ajax jquery 调用

java.text.ParseException : Unparseable date “yyyy-MM-dd' T'HH:mm:ss. SSSXXX” - SimpleDateFormat

soap - CF Web 服务出现严重的间歇性错误

sql - CFQuery 没有将时间部​​分保存到 Oracle 日期时间字段

php - 如何将 PHP 或 JavaScript 变量传递给 Windows cmd.exe

javascript - 如何使用动画修复菜单

ios - 如何对从服务器获取的数据进行排序

ios - Swift 3 更改日期格式

coldfusion - 如何在 Railo 中捕获 "coldfusion.runtime.MissingArgumentException"等效项?

javascript - Mootools 微调中心屏幕