2011-09-17 11 views
-4

正確に24時間経過してもそれ以上のことがなければ、真のブール式を返すことができますか?PHPでのタイムスタンプの比較

私はこれらを2回入れてstrtotime()を使用しています:2の差が86400であるとき

$time1 = 1316268919; 
$time2 = 1316268898; 
+1

がhttp://stackoverflow.comあります/ search?q = compare + times + php – Fabio

+1

答えは、あなたが24時間の絶対時間を知りたいのか、それともその時間帯の24時間を知りたいのかによって決まります。 'strtotime( '2011-10-30 02:00:00') - strtotime( '2011-10-29 02:00:00');'ヨーロッパ/ベルリンでは、その日のDST切り替えのため90000秒になります。 'strtotime'はDSTを認識しているので注意してください。' echo strtotime( '2011-10-30 02:00:00') - strtotime( '2011-10-29 02:00:00 +24時間'); 'は0 – Gordon

答えて

1

これは、あなたが必要なものを行う必要があります。

if (($time1-$time2) == 86400) { 
    // Exactly 24 hours have passed. 
} 
+0

有効なコメント。問題は年に2回しか起こりません;)(うーん、DSTに関するコメントは消えましたが、部分的には正しい) – jancha

+0

これはすべての場合に正しい答えです。計算のためにDSTを考慮する必要はありません。ノートは "昨日同じ時間"ではなく "24時間"でした。したがって、DSTの境界線上にある場合、午前12時(真夜中)は午前1時から24時間です。これは、2回の間に24時間が経過したときの正解です。 – ircmaxell

+1

「24時間」の正確な定義に依存します。正確に60分ごとに24時間を意味する場合、コードは正しいです。 24時間を意味する場合、コードはDSTとうるう秒の両方で正しくありません。 (例えば、毎日同じ時刻を意味する「24時間ごと」と言っているが、同じものではない。) –

0

24時間= 86400secので、それは正確に24時間

n.b.です該当する場合は、年に2回、DSTに問題を引き起こす可能性があります。

0

strtotime()は、Unixエポックからの秒数を返します。だから時間の違いを見つけるには、単純に別のものを引く。その差を24時間(24 * 60 * 60)の秒数と比較します。

0
abs($time1 - $time2) === 60 * 60 * 24 

ABSが念のためです。 time2はtime1より大きいかもしれません。

倍の差が60(分の秒)* 60 *(時速分)* 24(日の時間)= 86400に等しい場合は、日差

関連する問題