要将日期转换为时间戳,我通常会这样做 - strtotime(“2018-05-17 05:04:34)但是现在,我想将小时(无日期)转换为02:00:00到时间戳我该怎么做?
为什么我需要这是比较某个时间是否大于指定的小时数。这就是我在做的事情:
$reported = strtotime("2018-05-17 05:04:34");
$respons = strtotime("2018-05-17 17:04:34);
$response_time = $respons - $reported;
我想检查$ response_time是否大于1小时。
答案 0 :(得分:0)
有DateTime::diff
,可能会满足您的需求
https://secure.php.net/manual/de/datetime.diff.php
在你的情况下应该是
$datetime1 = new DateTime("2018-05-17 05:04:34");
$datetime2 = new DateTime("2018-05-17 17:04:34);
$interval = $datetime1->diff($datetime2);
echo $interval->format('H hours');
答案 1 :(得分:0)
Strtotime在没有约会的情况下解析时间没有问题 没有必要伪造一个会回来的日期,并且会让你节省日光 我还添加了一个检查,以确定开始/结束是否#34;反转"。
$start= "2018-05-17 05:04:34";
$end = "2018-05-17 17:04:34";
//Note that it's intentionally reversed
$diff = strtotime(substr($start,11))-strtotime(substr($end,11));
//If the calculation was reversed add one day in seconds
if($diff <0) $diff += 86400;
If($diff >3600){
Echo "more than one hour";
}Else{
Echo "less than one hour";
}
答案 2 :(得分:-1)
我喜欢DateTime类,试一试:
<?php
$reported = new DateTime('2018-05-17 05:04:34');
$reported->modify('+2 hours');
$now = new DateTime();
echo $now < $reported ? 'less than 2 hours' : 'more than 2 hours';
请在此处查看DateTime类文档http://php.net/manual/en/class.datetime.php
答案 3 :(得分:-1)
我相信只有我正确地理解了你的问题。
我想转换几小时(没有日期),例如02:00:00到时间戳。
此处没有日期组件。
好的,我认为他们的日期相同。如果是这种情况,只需在两者前面附加一个任意日期即可使strtotime()
功能正常工作:
$start = "05:04:34";
$end = "17:04:34";
$reported = strtotime("2018-05-17 " . $start);
$respons = strtotime("2018-05-17 " . $end);
$response_time = $respons - $reported;
if ($response_time > 3600)
echo "More than hour!";
else
echo "Less than hour!";
注意:如果开始时间是17:00,结束时间是08:00 - 这是在第二天发生,则不起作用。您必须确定开始时间是否大于结束时间,然后您必须再添加一天到结束时间。