strtotime PHP的奇怪响应

时间:2019-07-04 14:01:11

标签: php datetime strtotime

我有一个代码,我在其中使用 strtotime()来获取PHP中的日期时间戳

遇到了奇怪的反应。

案例1。我得到一个类似“ Tue Jul 2 6pm”的日期: strtotime给出了bool(false)。

<?php $case1 = strtotime("Tue July 2 6pm"); 
var_dump($case1);
?>

情况2。如果日期类似于“ Tue Jul 2 6:00 pm”:strtotime给出时间戳“ 1562115600 ”,以年份为当年。

<?php $case2 = strtotime("Tue July 2 6:00pm"); 
var_dump($case2);
?>

谁能帮助我。为什么在第一种情况下 strtotime给出bool(false)

该如何解决此问题,请帮忙?

2 个答案:

答案 0 :(得分:4)

check php manual for strtotime

  

该函数期望得到一个包含英语日期格式的字符串,并将尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),

     

返回成功的时间戳,否则返回FALSE。

要修复,必须将其转换为有效格式

valid date time formats in php

答案 1 :(得分:-1)

首先要指出的是:

<?php
date_create("Tue Jul 2 6pm");
var_dump(date_get_last_errors());

给出错误:“在数据库中找不到时区”。这意味着不能将其识别为有效的日期/时间字符串。您可以明确指定格式:

date_create_from_format("D F j ga", "Tue Jul 2 6pm")