【发布时间】:2016-02-16 21:48:29
【问题描述】:
我在 json 消息中有一个字符串,如下所示:“2016-2-16 13:48:3”
请注意,秒数不是以零开头的,在将日期插入数据库之前,我需要验证它的格式是否正确,
所以我创建了一个函数来使用 date_format 函数来验证日期,如下所示:
function validateDate($date, $format = 'Y-m-d H:i:s')
{
$d = DateTime::createFromFormat($format, $date);
if ($d) {
return $date;
} else {
return null;
}
}
我的问题是,当秒数不以 0 开头时,它返回 null,因为格式没有不以 0 开头的秒数,所以秒数应该像“03”而不是“3”,
有什么想法吗?
【问题讨论】:
-
第一件事:为什么有没有前导零的秒?
-
主要问题是:“2016-2-16 13:48:3”是有效的日期时间吗?我怀疑没有。顺便说一句,要验证该日期,您必须在验证之前操作
$date。你可以试试preg_replace( '/:(\d)$/', ':0\1', $date ) -
这将是我的问题。 php 的日期格式手册页只有 's' 表示带有前导零的秒数。您对正在使用的 json 有任何控制权吗?如果没有,您将不得不自己处理日期。
-
请满足我的好奇心:在原始 json 中也有 sec > 9 的日期,对吧?
-
@fusion3k:是的,大于9的秒就没有问题,所以我的问题就是小于10的秒