0

我有一些约会,比如:

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

过去6个月都有,现在我想要strtotime()它们,但它们都不完整(缺少年份),如何制作一些流程以便我可以strtotime()它们?

4

3 回答 3

0

您应该使用DateTime类及其createFromFormatgetTimeStamp方法,而不是 strtotime。

于 2012-11-20T09:23:29.617 回答
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']
于 2012-11-20T09:36:36.713 回答
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] => 
)
于 2012-11-20T09:40:11.463 回答