如何将包含PHP日期的变量与当前时间进行比较以计算出的时间

时间:2015-05-27 18:42:00

标签: php datetime

如何判断包含类似“2015-05-12 15:32:53”的戳记的变量是否少于或超过一小时与当前时间戳进行比较?我可以使用PHP中的任何好函数来比较这种时间格式吗?

我有这段代码:

$date = date('Y-m-d h:i:s a', time()); //Current time e.g. "“2015-05-12 13:32:53”
$timetocomp; //Contains “2015-05-12 15:32:53”

我的问题是我如何比较它们以了解是否已经过了2个小时。

2 个答案:

答案 0 :(得分:1)

尝试DateTime

  $timetocomp = "2015-06-27 09:10:53"; // its 2015-05-28 08:5x:xx now
  $dateTimeToCompare = DateTime::createFromFormat('Y-m-d H:i:s', $timetocomp);
  var_dump($dateTimeToCompare);
  $dateTimeNoW = new DateTime();

  $diff = $dateTimeToCompare->diff($dateTimeNoW);


  if($diff->h >= 1 or $diff->d > 0 or $diff->m > 0 or $diff->y > 0) {
    echo "difference of at least 1 hour";
  } else {
    echo "difference less than 1 hour";
  }

编辑:我的错误是我假设 $ diff 会包含每个尺码的差异,但它的分隔为var_dump($diff)显示。

object(DateInterval)#3 (15) {
    ["y"]=> int(0)
    ["m"]=> int(0)
    ["d"]=> int(30)
    ["h"]=> int(0)
    ["i"]=> int(15)
    ["s"]=> int(13)
    ["weekday"]=> int(0)
    ["weekday_behavior"]=> int(0)
    ["first_last_day_of"]=> int(0)
    ["invert"]=> int(1)
    ["days"]=> int(30)
    ["special_type"]=> int(0)
    ["special_amount"]=> int(0)
    ["have_weekday_relative"]=> int(0)
    ["have_special_relative"]=> int(0)
  }

所以我更新了If-clause,以便查看日期,月份和年份。

答案 1 :(得分:0)

如果您要检查天气字符串是否包含该格式,请尝试使用正则表达式,然后尝试找出实际日期并进行比较。