1

phpとjqueryに基づいて、時差を計算し、15分前にポップアップを表示する機能を持つ小さなカレンダーを作成しています。

15分前に分単位の時間差とポップアップを計算する方法を教えてもらえますか?

私の時間は次のように保存されます

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!');


コードの説明:

残り時間を取得するために、php1970年1月1日からのミリ秒単位の戻り時間と1970年1月1日から
の現在の時間のミリ秒比較を行いましたms -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

これで2ミリ秒の値が得られたので、それらを単純に減算して残り時間を取得できます。

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年のように)。次に、date()関数を使用して15 * 60を減算し、秒から日付形式に戻すことができます。(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 に答える