将日期字符串和时间字符串转换为时间

时间:2014-07-22 09:10:54

标签: php

我有2个字符串

$date1 = $_POST['date1']; // example: 22/07/2014
$time1 = $_POST['time1']; // example: 12:05

如果此输入时间已过,我如何比较?

我试过但它不起作用:

$date3 = $date1 . ' ' . $time1;
$date4 = strtotime($date3);

if(time()>$date4)...

有任何帮助吗?感谢。

6 个答案:

答案 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
{
    ...