我想将这个日期'2012年3月30日晚9点30分'转换为2012-03-30 09:30:00的格式 最简单的方法是什么?我需要它在PHP 5.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'))
答案 0 :(得分:1)
EDIT: following Stewie advice:
<?php
list($year, $day, $month, $hour, $minute, $ampm) = sscanf("2012 30 March 9:30 pm
", "%d %d %s %d:%d %s");
if($ampm == 'pm') $hour += 12;
echo date("Y-m-d H:i:s", strtotime($day . ' ' . $month . ' ' . $year . ' ' . $ho
ur . ':' . $minute));
答案 1 :(得分:1)
使用sscanf(),然后使用正确的格式生成字符串,使用strtotime(),然后使用所需的格式生成date()。
答案 2 :(得分:1)
这将从日期中提取每个组件并重新排列,以便strtotime()
能够理解。在此之后转换为您想要的任何日期格式。
使用正则表达式可能有点矫枉过正。
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));
}
答案 3 :(得分:0)
http://php.net/manual/en/function.strtotime.php#106043
查看官方文档和用户贡献的链接......
答案 4 :(得分:0)
试试这个
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));