一旦精确的24小时过去了,我将如何返回true的布尔表达式?比较PHP中的时间戳
我使用strtotime()
来了就把这两个时间:
$time1 = 1316268919;
$time2 = 1316268898;
一旦精确的24小时过去了,我将如何返回true的布尔表达式?比较PHP中的时间戳
我使用strtotime()
来了就把这两个时间:
$time1 = 1316268919;
$time2 = 1316268898;
这应该做你需要的东西:
if (($time1-$time2) == 86400) {
// Exactly 24 hours have passed.
}
有效的评论。但问题一年只会出现两次;)(嗯,关于DST的评论消失了,但部分正确) – jancha
这是所有情况下的正确答案。在计算中不需要考虑DST。注意问题是“24小时”,而不是“昨天同一时间”。因此,如果在DST边界上,则会说凌晨12点(午夜)是凌晨1点24小时。这是两次24小时过后的正确答案。 – ircmaxell
这取决于使用“24小时”的准确定义。如果他们的意思是24小时精确到60分钟,那么你的代码是正确的。如果他们的意思是24小时,那么你的代码对于DST和闰秒都是不正确的。 (正确地指定你想要的代码是非常重要的,例如,人们经常说“每24小时”意味着“每天同一时间”,但它们不是同一件事。) –
24小时= 86400sec所以,当两个不同的是86400,这也正是24小时
注:如果适用,每年两次可能会导致DST出现问题。
strtotime()
返回Unix纪元以来的秒数。所以为了找到时间差异,只需从另一个中减去一个。然后比较该差异与24小时内的秒数(24 * 60 * 60)。
abs($time1 - $time2) === 60 * 60 * 24
的ABS是以防万一; time2可能比time1更大。
如果时间差等于60(秒在一分钟内)* 60 *(每小时分钟)* 24(小时一天)= 86400,有一个天差
http://stackoverflow.com/search?q = compare + times + php – Fabio
答案取决于您是否想知道该时区的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 hours');'是0. – Gordon