PHP中字符串到日期的转换
我想将这样的日期“2012年3月30日9:30 pm”转换成这种格式2012-03-30 09:30:00 最简单的方法是什么?我需要它在PHP5.2和更早版本上工作,所以这个解决方案对我没有任何用处PHP中字符串到日期的转换,php,date,strtotime,strptime,Php,Date,Strtotime,Strptime,我想将这样的日期“2012年3月30日9:30 pm”转换成这种格式2012-03-30 09:30:00 最简单的方法是什么?我需要它在PHP5.2和更早版本上工作,所以这个解决方案对我没有任何用处 date_format('Y-m-d H:M:S',date_create_from_format('Y m F g:i A', '2012 30 March 9:30 pm')) 编辑:以下建议: 编辑:以下建议: 使用sscanf(),然后以正确的格式生成字符串,然后使用所需格式生成日期()
date_format('Y-m-d H:M:S',date_create_from_format('Y m F g:i A', '2012 30 March 9:30 pm'))
编辑:以下建议:
编辑:以下建议:
使用sscanf(),然后以正确的格式生成字符串,然后使用所需格式生成日期() 使用sscanf(),然后使用正确的格式生成字符串,然后使用所需的格式生成strotime()和date()
请参阅官方文档和用户贡献的链接…
请参阅官方文档和用户贡献的链接…试试这个
list($year, $month, $day, $year, $hour, $minutes, $a) = sscanf("2012 30 March 9:30 pm", "%d %d %d $s $d:$d $s");
echo date("Y-m-d h:i:s", strtotime($day." ".$month." ".$year." ".$hour.":".minutes." ".$a));
试试这个
list($year, $month, $day, $year, $hour, $minutes, $a) = sscanf("2012 30 March 9:30 pm", "%d %d %d $s $d:$d $s");
echo date("Y-m-d h:i:s", strtotime($day." ".$month." ".$year." ".$hour.":".minutes." ".$a));
这将从日期中提取每个组件并重新排列,以便strotime()
理解。在此之后,转换为您想要的任何日期格式
不过,使用正则表达式可能有些过分
function parse_date_time_to_ts($dt)
{
$dt_pattern = '#([0-9]{4})\s+([0-9]{1,2})\s+([a-z]+)\s+([0-9]{1,2}:[0-9]{2})\s+(am|pm)#is';
$dt_replace = '$2 $3 $1 $4 $5';
return strtotime(preg_replace($dt_pattern, $dt_replace, $dt));
}
这将从日期中提取每个组件并重新排列,以便strotime()
理解。在此之后,转换为您想要的任何日期格式
不过,使用正则表达式可能有些过分
function parse_date_time_to_ts($dt)
{
$dt_pattern = '#([0-9]{4})\s+([0-9]{1,2})\s+([a-z]+)\s+([0-9]{1,2}:[0-9]{2})\s+(am|pm)#is';
$dt_replace = '$2 $3 $1 $4 $5';
return strtotime(preg_replace($dt_pattern, $dt_replace, $dt));
}
这不起作用,日期格式不是标准格式,除非用户使用某个外来语言环境。这不起作用,日期格式不是标准格式,除非用户使用某个外来语言环境