2012-01-26 35 views
1

這可能非常微不足道,但我不能爲我的生活找到任何好的文檔。我有一個AJAX事件設置,我需要從客戶端發送時間戳到服務器。服務器腳本(PHP)將檢查它已通過的時間戳,對照mysql表中的CURRENT_TIMESTAMP並根據結果採取行動。JavaScript時間戳以檢查MySQL

我的問題是,我需要在客戶端頁面上的JavaScript中創建一個時間戳,這將與MySQL時間戳相媲美。

回答

1

亞歷克斯幾乎擁有了

,這是錯誤的唯一的事情就是JS時間戳是毫秒級的UNIX時間戳爲秒。因此,您需要將JS時間戳除以1000.

var unixNow = Math.round((new Date().getTime())/1000); 
+0

感謝您的幫助,您們倆! – lampwins

+0

該死的,我是否把乘法誤認爲除法?這就是我在公衆假期工作時得到的東西...... – alex

1

如何剛剛從時代從JavaScript發送數秒

var secondsFromEpoch = ~~(+new Date/1000); 

..和然後更改查詢......

WHERE UNIX_TIMESTAMP(`datetime`) == :secondsFromEpoch_passed_from_JavaScript 

+0

感謝您的幫助! – lampwins

+0

在這裏,Alex的棘手JS的一些解釋。 '+ new Date'與'new Date()相同。getTime()''+'將日期轉換爲數字。 '~~'是實現'Math.round()'的另一種方式,我聽說它更快 –

+0

@JuanMendes感謝您的解釋。然而,'+'調用'Date'的'valueOf()'返回一個'Number'。其次,'~~',或者雙倒數位,在功能上與'Math.floor()'相同。 – alex