如何遍历数组并将所有日期字段转换为日期对象?
我有一个数组;
array (size=37)
'id' => string '12' (length=3)
'name' => string 'Jack' (length=6)
'surname' => string 'Smith' (length=1)
'age' => string '24' (length=1)
'birthdate' => string '19920512' (length=0)
'joindate' => string '20160923' (length=0)
'graduationdate' => string '' (length=0)
我想将日期字符串转换为日期时间对象,如下所示;
$record['birthdate'] = \DateTime::createFromFormat('Ymd', $record['birthdate']);
但我想自动检测日期键,并将值设为datetime对象,如果该值为空字符串,则可以将其设为false。
我有点困惑
foreach ($record as $value) {
$value = \DateTime::createFromFormat('Ymd', $value['xxx']);
}
答案 0 :(得分:1)
foreach($array as $key => &$field){
if(strpos($key,'date')!==false && strlen($field)==10 AND is_numeric($field)){
$field = \DateTime::createFromFormat('Ymd', $field);
}
}
print_r($array);
为什么这样:
key=values
对
key
的单词date
到检测到的日期字段&
,我们直接在数组中更改了值。美好的一天
答案 1 :(得分:-1)
您可以使用strtotime()
http://uk.php.net/manual/en/function.strtotime.php转换包含日期的字符串。
<?php
// both lines output 813470400
echo strtotime("19951012"), "\n",
strtotime("12 October 1995");
?>
您可以将结果作为第二个参数传递给date()以自行重新格式化日期:
<?php
// prints 1995 Oct 12
echo date("Y M d", strtotime("19951012"));
?>