PHP - 比较日期

时间:2016-08-15 01:14:31

标签: php date datetime strtotime

在我的PHP脚本中,我从我的iOS应用程序中获取了一个日期字符串,如下所示:

$myTime     = $app->request()->post('myTime'); // 2016-08-15 20-02
$date = date('Y-m-d H-i', strtotime($myTime));

现在我有了iOS应用程序的日期,我想检查我的数据库以进行预订/预订,并检查我的iOS应用程序的日期是否在日期+/- 10小时之间来自数据库:

// $book['book_datetime'] is confirmed 2016-08-15 20:38:00

$plusTen = date('Y-m-d H:i:s', strtotime($book['book_datetime'])+36000);
$minusTen = date('Y-m-d H:i:s', strtotime($book['book_datetime'])-36000);

if((strtotime($date) > strtotime($minusTen)) && (strtotime($date) < strtotime($plusTen))) {

     //should be true

} else {

}

if语句应该是true,但它不起作用。谁能告诉我为什么?

1 个答案:

答案 0 :(得分:0)

你的

$date = date('Y-m-d H-i', strtotime($myTime));

因为你有非标准的时间格式而无法工作。

而是像这样使用DateTime类来获取奇数日期时间格式的时间戳。

$myTime = $app->request()->post('myTime'); // 2016-08-15 20-02
$mydt   = DateTime::createFromFormat('Y-m-d H-i', $myTime);

$date = $mydt->getTimestamp();

你评论:

我从CLI运行此代码并且可以正常运行

<?php
$myTime = '2016-08-15 20-02';
$mydt   = DateTime::createFromFormat('Y-m-d H-i', $myTime);

echo $mydt->getTimestamp() . PHP_EOL;
echo $mydt->format('Y-m-d H:i:s') . PHP_EOL;

如果您收到错误,那么$app->request()->post('myTime');的日期时间值可能不是您认为的格式