计算时差并根据时差显示弹出窗口


calculate time difference and display popup based on time difference

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')
}
php有一个mktime()函数(http://php.net/manual/en/function.mktime.php)它以小时、分钟、秒、月、日、年为单位,计算自纪元以来的秒数(如1971年)。然后,您可以使用date()函数减去15*60,从秒返回到日期格式。(http://php.net/manual/en/function.date.php)