php strtotime有一天未完成

时间:2012-11-20 09:15:06

标签: php strtotime

我有一些约会,比如:

20 November 06:10
12 November 08:12
10 October 13:23

在过去的6个月中,现在我想要strtotime()他们,但他们都不完整(缺少一年),如何制定一些流程以便我strtotime()他们?

3 个答案:

答案 0 :(得分:0)

您应该使用DateTime类及其createFromFormatgetTimeStamp方法代替strtotime。

答案 1 :(得分:0)

试试这个:

$dates = array("10 October 13:23", "12 November 08:12", "10 October 13:23");

    foreach($dates as $d){
        $exploded = explode(" ", $d);
        $newDate = array_slice($exploded, 0,2,true)+array(2=>"2012")+array(3 => $exploded[2]);

        //print_r($newDate);
        $time = strtotime(implode($newDate));
        echo $time."<br/>";
    }

我得到的输出是:

1349868180
1352704320
1349868180

逻辑是:

你缺少这一年,所以我将日期分解成一个数组来切片,插入年份(+array(2=>"2012")部分)并再次使用implode粘合它们,然后运行strtotime。

这项工作仅适用于今年,因此您可以使用此逻辑将年份添加到您的所有日期,或者将来绝对无法过滤不同年份的日期。

  • 我将日期添加到数组中以循环遍历所有这些日期,您可以使用循环其他方式,具体取决于您存储所有日期的位置。例如,如果他们在数据库中,您可以将脚本包含在while($row = mysqli_fetch_assoc($result))部分中,而$d将改为$row['date']

答案 2 :(得分:0)

print_r(date_parse_from_format("d F H:i", '20 November 06:10'));

给你:

Array
(
    [year] => 
    [month] => 11
    [day] => 20
    [hour] => 6
    [minute] => 10
    [second] => 0
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 
)