我有2个字符串
$date1 = $_POST['date1']; // example: 22/07/2014
$time1 = $_POST['time1']; // example: 12:05
如果此输入时间已过,我如何比较?
我试过但它不起作用:
$date3 = $date1 . ' ' . $time1;
$date4 = strtotime($date3);
if(time()>$date4)...
有任何帮助吗?感谢。
答案 0 :(得分:3)
默认情况下,strtotime
将日期读为mm / dd / yyyy。您需要将输入日期更改为dd-mm-yyyy
$date1 = str_replace('/','-', $date1);
现在你的脚本可以运行了。
答案 1 :(得分:2)
您的日期格式无效。请在此网站上查看允许的格式:http://ch2.php.net/manual/en/datetime.formats.php
这就是函数strtotime()
改为返回false
的原因。
答案 2 :(得分:2)
无需转换输入字符串,您可以使用DateTime::createFromFormat
,如下所示:
<?php
$date1 = "22/07/2014";
$time1 = "12:05";
$dt = DateTime::createFromFormat("j/m/Y H:i", "$date1 $time1");
$now = new DateTime();
if ($dt < $now) {
echo "time has passed";
}
?>
可以使用>
和<
来比较DateTime对象。如果没有参数传递给构造函数,则该对象采用当前日期和时间的默认值。
createFromFormat
的第一个参数是格式字符串,它允许您指定日期和时间的确切格式。有关详细信息,请参阅上面的链接。
答案 3 :(得分:0)
您需要使用下一种日期格式之一:
22-07-2014;
22.07.2014;
2014/07/22;
或转换它:
$date1 = str_replace('/','-',$_POST['date1']); // example: 22/07/2014
$time1 = $_POST['time1']; // example: 12:05
$date3 = $date1 . ' ' . $time1;
$date4 = strtotime($date3);
if(time()>$date4)...
答案 4 :(得分:0)
日期格式错误。你必须改变它
$date1 = $_POST['date1']; // example: 22/07/2014
$time1 = $_POST['time1']; // 12:05
$explodedate = explode("/",$date1);
$setdate = $explodedate[1].'/'.$explodedate[0].'/'.$explodedate[2];
$date3 = $setdate . ' ' . $time1;
$date_timestammp = strtotime($date3);
答案 5 :(得分:0)
DateTime
类
$date1 = "20/07/2014"; // example: 22/07/2014
$time1 = "12:05"; // example: 12:05
$myDate = new DateTime(str_replace("/", "-",$date1) . $time1);
$now = new DateTime('now');
if($myDate > $now) // false
{
...