将小时数转换为时间戳

时间:2018-05-18 14:25:59

标签: php

要将日期转换为时间戳,我通常会这样做 - 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小时。

4 个答案:

答案 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";
}

https://3v4l.org/g1jZH

答案 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';

在此处查看https://3v4l.org/T7BEL

请在此处查看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 - 这是在第二天发生,则不起作用。您必须确定开始时间是否大于结束时间,然后您必须再添加一天到结束时间。