我正在編寫一個應用程序,我需要在服務器端使用在Windows Server 2008上運行的ColdFusion 8以及使用javascript(在Google Chrome中測試)的客戶端獲取時代。問題是由ColdFusion生成的時代比JavaScript生成的時代落後一個小時。我已經驗證日期/時間設置在客戶端和服務器端都是正確的。爲什麼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添加到它生成的時代值,但我寧願不這樣做,而不知道爲什麼我首先得到一個不正確的值。有沒有人看到我在這裏失蹤?
什麼是你的JVM版本?你有什麼TZ? – 2013-04-30 22:07:02