我有一个网格,其中每一行都显示了一个PHP格式('Ymd H:i:s')日期。我想应用一个javascript过滤器,它只会显示那些时间戳超过36小时的行。
最好的方式是第一次超过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 :(得分: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')
答案 1 :(得分:0)
由于某种原因,JavaScript Date对象使用零个月。尝试将1
添加到该月份。
dateInPhpFormat = mydate.getFullYear() + '-' + (mydate.getMonth() + 1 ) +'-'+mydate.getDate() + " " + mydate.getHours() + ":" + mydate.getMinutes() + ":" + mydate.getSeconds();