PHP中的字符串到日期转换

时间:2012-03-15 13:07:34

标签: php date strtotime strptime

我想将这个日期'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'))

5 个答案:

答案 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));