2012-06-11 30 views
0

我使用時間戳作爲我的應用程序的一部分,但問題是,同時在Javascript和SQL Server中創建的時間戳顯示不同的值。他們運行在同一臺計算機上,所以系統時鐘不是問題。JS和SQL Server之間的UTC時間戳不同

的Javascript:

var now = new Date(); 

console.log(new Date(now.getUTCFullYear(), 
     now.getUTCMonth(), 
     now.getUTCDate(), 
     now.getUTCHours(), 
     now.getUTCMinutes(), 
     now.getUTCSeconds()).valueOf() /1000);​ 

的SQL Server 2012:

SELECT datediff(second,'1970-01-01 00:00:00.000',getutcdate()) 

難道說的DATEDIFF參數的第一部分,是不是在解釋UTC 01/01/1970?

爲了測試,我在jsfiddle中執行了javascript,並且在管理工作室中對SQL執行了rand操作,彼此在1-2秒之內。

結果: 的Javascript:1339348299 SQL服務器:1339384301

所以這是的36002秒,或10小時的差異,這是我的時區偏移。

+0

兩者之間的差異有多大? –

+0

你是如何運行這些「在同一時間」?在平行下?或者在運行它們之間經過一段時間? –

+0

更新了問題,並回答了上述q的 – BlinkyBill

回答

0

OK,這裏有兩種方法來獲取時間戳,將比較...

的Javascript

return Math.round(new Date().getTime()/1000.0); 

SQL服務器

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) 
0

基於你展示什麼,我假設兩個系統中的一個系統的時區設置不正確。您可以通過在每個SQL和JavaScript中使用相應的getdate()(而不是getUTCdate())函數進行檢查並進行比較。我的猜測是他們中的一個將返回與getUTCdate相同的值,表明這是一個需要解決的問題。