我有一个日期列表,其中一些带有时间:
01/03/2014
02/01/2014 02:00 PM
02/02/2014 1:00 PM
03/01/2014
我正在检查所有这些并将它们转换为新的 DateTime
对象,将它们发送到 JavaScript,然后使用 moment.js 来显示它们。
moment(data.date).format('L LT')
这会按以下格式显示日期:
01/03/2014 12:00 AM
02/01/2014 02:00 PM
02/02/2014 01:00 PM
03/01/2014 12:00 AM
有没有一种方法可以在没有正则表达式(或任何字符串操作)的情况下检测 DateTime
构造函数是否仅使用日期(没有时间)调用?
最佳答案
我不认为 DateTime 类提供了一种方法来检测对象是否实际上是从只是日期创建的。一旦对象被创建,该信息就会丢失。一个小的解决方法是使用 date_parse()
检查缺少的日期时间字段(如评论中提到的@salathe)。
如果 DateTime 不包含小时、分钟或秒部分,则意味着它只包含日期部分。使用上述逻辑,您的代码将如下所示:
$datetimes = [
'01/03/2014',
'02/01/2014 02:00 PM',
'02/02/2014 1:00 PM',
'03/01/2014'
];
$withTime = array();
$withoutTime = array();
foreach ($datetimes as $dt) {
$parts = date_parse($dt);
if ($parts['hour'] === FALSE &&
$parts['minute'] === FALSE &&
$parts['second'] === FALSE) {
$withoutTime[] = $dt;
} else {
$withTime[] = $dt;
}
}
print_r($withTime);
print_r($withoutTime);
输出:
Array
(
[0] => 02/01/2014 02:00 PM
[1] => 02/02/2014 1:00 PM
)
Array
(
[0] => 01/03/2014
[1] => 03/01/2014
)
关于php - 检测 DateTime 对象中是否指定了时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180959/