我需要在数组中格式化日期 - 但数组中的日期不会在数据库中保存为datetime
或类似的东西..我已经从中获取了日期我的服务器切断了它们。
所以我需要使用preg_replace
或str_replace
到目前为止,我使用str_replace
尝试了什么:
$reverse_date = str_replace( '[', '' ,$reverse_date);
$reverse_date = str_replace( ']', '' ,$reverse_date);
$reverse_date = str_replace( '/', '.' ,$reverse_date);
但我不想为此使用三行。
如果我print_r
这个,我会得到:12.Oct.2015:01:10:43 +0200
之前看起来像这样:[12/Oct/2015:00:37:29 +0200]
所以这没关系!但我仍然不想使用三行,但我不理解preg_replace
语法
我想要以下输出:
12.Oct.2015(space)01:10:43 +0200
答案 0 :(得分:3)
正如您所说,您正在使用以下格式从阵列中获取日期
[12/Oct/2015:00:37:29 +0200]
因此,您可以简单地使用PHP的str_replace
功能,而不是使用preg_replace
或DateTime::createFromFormat
$date = DateTime::createFromFormat("[d/M/Y:H:i:s P]","[12/Oct/2015:00:37:29 +0200]");
echo $date->format('d.M.Y H:i:s P');//12.Oct.2015 00:37:29 +02:00
答案 1 :(得分:1)
使用array_features.forEach(function(feature){
// whose project are you
var project = feature.get('project');
// decide what you do
});
反汇编日期并合并各个部分以形成您需要的结果:
date_parse
您没有将月份作为缩写字符串,但通过关联数组([40] boris> $date_array = date_parse(" [12/Oct/2015:00:37:29 +0200] ");
// array(
// 'year' => 2015,
// 'month' => 10,
// 'day' => 12,
// 'hour' => 0,
// 'minute' => 37,
// 'second' => 29,
// 'fraction' => 0,
// 'warning_count' => 0,
// 'warnings' => array(
//
// ),
// 'error_count' => 2,
// 'errors' => array(
// 0 => 'Unexpected character',
// 27 => 'Unexpected character'
// ),
// 'is_localtime' => true,
// 'zone_type' => 1,
// 'zone' => -120,
// 'is_dst' => false
// )
)添加这一点很简单,并且您可以安全地了解日期解析内容以及将来的更改需要。
答案 2 :(得分:0)
好的我发现如何用preg_replace在一行中做到这一点,但是我喜欢Uchiha的答案,日期格式更多 - 即使他没有使用正则表达式,这可能是最好的方法。
echo preg_replace(['~(?<=\d{4}:\d{2}):~', '~[\[]~', '~[\]]~', '~[\/]~g'],[' ', '', '', '.'],'[12/Oct/2015:00:37:29 +0200]');
12.Oct.2015:00 37:29 +0200