1

im writing a small calendar based on php and jquery which has the a function to calculate the time difference and display a popup 15 minutes before.

Can some one tell me how can i calculate the time difference in minutes and popup 15 minutes before.

my time is saved as

18-07-2012 15:13:54
4

4 回答 4

1

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 日开始
的当前时间进行了毫秒比较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

ms要从转换后的 php 时间中检索,我们可以使用:

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;
于 2012-07-18T17:57:42.310 回答
1

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

于 2012-07-18T17:49:54.683 回答
0

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

于 2012-07-18T17:32:47.840 回答
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

-编辑; 修改后的代码如下: -

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')
}
于 2012-07-18T17:34:36.243 回答