我正在写一个基于php和jquery的小日历,它有一个计算时差的功能,并在15分钟前显示一个弹出窗口。
有人可以告诉我如何以分钟为单位计算时差并在15分钟之前弹出。
我的时间保存为
18-07-2012 15:13:54
答案 0 :(得分:1)
检查PHP的DateTime::diff!也许它可以帮助你。
答案 1 :(得分:1)
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')
}