im编写了一个基于php和jquery的小型日历,该日历具有计算时差并在15分钟前显示弹出窗口的功能。
有人能告诉我如何计算以分钟为单位的时差并在15分钟前弹出吗。
我的时间被保存为
18-07-2012 15:13:54
jsBin演示
var php = '19-07-2012 03:00:00'.split('-');
var phpDate = php[1]+'/'+php[0]+'/'+php[2];
var phpTime = new Date(phpDate).getTime();
var currTime = new Date().getTime();
var difference= phpTime-currTime;
var leftMin = Math.ceil( difference/(1000*60) );
$('#test').text(leftMin+' MINUTES LEFT!');
代码解释:
为了获得剩余时间,我对1970年1月1日以来以毫秒为单位的php
返回时间进行了毫秒比较
以及从1970年1月1日起CCD_ 2中的当前时间-减去这两个值并得到毫秒差。要计算分钟内的差异我刚刚做了:
var leftMin = Math.ceil( difference/(1000*60) );
诀窍是获得正确的时间格式,并将(php)返回的时间恢复为该格式
默认格式如下:MONTH/DAY/YEAR HOURS:MINUTES:SECONDS
为了将php返回的时间'19-07-2012 03:00:00'
转换为该时间,我使用了:
var php = '19-07-2012 03:00:00'.split('-'); // split in array fractions
var phpDate = php[1]+'/'+php[0]+'/'+php[2]; // reposition array keys and add '/'
返回:07/19/2012 03:00:00
,现在我们可以将其与当前时间进行比较,例如:
07/19/2012 03:45:21
要从转换后的php时间中检索ms
,我们可以使用:
var phpTime = new Date(phpDate).getTime(); // get "ms from our string
对于目前的时间,我们只采取:
var currTime = new Date().getTime(); // get "ms from 1/1/1970
现在有了两毫秒的值,我们可以简单地减去它们来获得剩余时间:
var difference= phpTime-currTime;
检查PHP的DateTime::diff!也许这对你有帮助。
var dateStr = '18-07-2012 15:13:54'//Day-Month-Year
var dateArray = dateStr.split('-')
var d1 = new Date(dateArray[1]+'-'+dateArray[0]+'-'+dateArray[2])
var dateStr2 = '18-07-2012 14:10:54'//Day-Month-Year
var dateArray2 = dateStr2.split('-')
var d2 = new Date(dateArray2[1]+'-'+dateArray2[0]+'-'+dateArray2[2])
var minutes = (d1-d2)/1000/60
-编辑;修改后的代码如下:-
function timeDiff(date1, date2){
//date format: Day-Month-Year
var dateArray = date1.split('-')
var d1 = new Date(dateArray[1]+'-'+dateArray[0]+'-'+dateArray[2])
var dateArray2 = date2.split('-')
var d2 = new Date(dateArray2[1]+'-'+dateArray2[0]+'-'+dateArray2[2])
var minutes = (d1-d2)/1000/60
return minutes;
}
if(timeDiff('18-07-2012 15:13:54', '18-07-2012 14:59:54')<=15){
alert('popup')
}