我有一个代码,我在其中使用 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)?
该如何解决此问题,请帮忙?
答案 0 :(得分:4)
check php manual for strtotime:
该函数期望得到一个包含英语日期格式的字符串,并将尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),
返回成功的时间戳,否则返回FALSE。
要修复,必须将其转换为有效格式
答案 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")