Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中字符串到日期的转换_Php_Date_Strtotime_Strptime - Fatal编程技术网

PHP中字符串到日期的转换

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(),然后以正确的格式生成字符串,然后使用所需格式生成日期()

我想将这样的日期“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(),然后以正确的格式生成字符串,然后使用所需格式生成日期()

使用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));
}

这不起作用,日期格式不是标准格式,除非用户使用某个外来语言环境。这不起作用,日期格式不是标准格式,除非用户使用某个外来语言环境