将日期字符串转换为日期时间对象
如何循环访问数组并将所有日期字段转换为日期对象?我有一个数组;我有数组;将日期字符串转换为日期时间对象
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对象,如果该值是一个空字符串也可以只是使它假的。
我有点困惑
foreach ($record as $value) {
$value = \DateTime::createFromFormat('Ymd', $value['xxx']);
}
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
双在foreach - 我们检查
key
的字 - 部分date
到检测到的日期字段 - 然后我们检查是否有可用的数字与10位
- 如果一切正常,我们做一个对象从价值
- 而且由于在foreach使用
&
,我们在数组中直接更改值。
有愉快的一天
尽管此代码片段可能会解决问题,但[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-基于代码的答案)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –
@JohnConde确定,添加了一些信息。 – JustOnUnderMillions
很好的回答。我已经有该循环将数字字符串转换为整数和浮点数,并将空字符串转换为空值,我可以添加如果日期部分。我从来没有想过'strpos' – Mentos93
您可以使用strtotime()
http://uk.php.net/manual/en/function.strtotime.php包含日期字符串转换。
<?php
// both lines output 813470400
echo strtotime("19951012"), "\n",
strtotime("12 October 1995");
?>
可以传递的结果作为第二个参数,以日期()将自己重新格式化日期:
<?php
// prints 1995 Oct 12
echo date("Y M d", strtotime("19951012"));
?>
我的回答错了吗?为什么投下这个? – user3441151
可以循环在阵列的每一个的属性和检查与一个正则表达式的值。如果它匹配,(意味着它不是空的!),那么你有一个日期字符串,你可以使用DateTime类转换。 –