2015-04-20 41 views
1

我有一個網格,其中每行都有一個PHP格式('Ymd H:i:s')日期顯示。我想應用一個JavaScript過濾器,它將只顯示時間戳超過36小時的那些行。在javascript中獲取最後36小時的時間戳並將其與php時間戳進行比較

什麼是最先獲得36小時時間戳的最佳方式&然後將該時間戳與使用javascript顯示的PHP時間戳進行比較。

直到現在我試着用下面的代碼,讓過去36時間戳

var mydate=new Date(); 
mydate.setHours(mydate.getHours()-36); 
dateInPhpFormat=mydate.getFullYear()+'-'+mydate.getMonth()+'- '+mydate.getDate()+" 
"+mydate.getHours()+":"+mydate.getMinutes()+":"+mydate.getSeconds(); 

當我打印dateInPhpFormat它顯示了錯誤的日期。 任何幫助,將不勝感激。

+0

說這顯示了錯誤的日期是有點含糊。你可以發佈你現在擁有的產品與你想要的產品嗎? –

+0

使用'moment.js' http://momentjs.com/ – Hackerman

+0

PHP使用秒,JS使用毫秒。沒有做一些調整,你不能直接使用另一種語言的時間戳。 –

回答

0

JavaScript Date對象由於某種原因使用了基於零的月份。嘗試在該月添加1

dateInPhpFormat = mydate.getFullYear() + '-' + (mydate.getMonth() + 1) +'-'+mydate.getDate() + " " + mydate.getHours() + ":" + mydate.getMinutes() + ":" + mydate.getSeconds(); 
3

唯一可能出錯的是Javascript爲您提供了不帶前導零的月,日,分和秒。此外,月份基於零,因此您需要在該月份添加1。

例如一個月JS:3,在PHP(用 'M'):03

您可以自己添加此前導零,這樣的;

var mydate=new Date(); 
mydate.setHours(mydate.getHours()-36); 

var month = ('0' + (mydate.getMonth() + 1)).substr(-2); 
var day = ('0' + mydate.getDate()).substr(-2); 
var hour = ('0' + mydate.getHours()).substr(-2); 
var minute = ('0' + mydate.getMinutes()).substr(-2); 
var second = ('0' + mydate.getSeconds()).substr(-2); 

dateInPhpFormat = mydate.getFullYear() + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; 

這會給你一個日期字符串是相同的到PHP date('Y-m-d H:i:s')