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

时间:2012-07-18 17:23:14

标签: php ajax codeigniter jquery

我正在写一个基于php和jquery的小日历,它有一个计算时差的功能,并在15分钟前显示一个弹出窗口。

有人可以告诉我如何以分钟为单位计算时差并在15分钟之前弹出。

我的时间保存为

18-07-2012 15:13:54

4 个答案:

答案 0 :(得分:1)

检查PHP的DateTime::diff!也许它可以帮助你。

答案 1 :(得分:1)

jsBin demo

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日起ms的当前时间 - 减去这两个值并获得毫秒差异。要计算分钟中的差异,我刚刚完成了:

 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;

答案 2 :(得分:0)

php有一个mktime()函数(http://php.net/manual/en/function.mktime.php),它占用小时,分钟,秒,月,日,年并计算自纪元以来的秒数(与1971年一样)。然后你可以减去15 * 60使用date()函数从几秒钟回到日期格式。 (http://php.net/manual/en/function.date.php

答案 3 :(得分:0)

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

-edit;修改后的代码如下: -

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')
}