0

このような日付「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'))
4

5 に答える 5

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));
于 2012-03-15T13:12:09.960 に答える
1

sscanf() を使用してから、正しい形式で文字列を作成し、その上で strtotime() を実行してから、必要な形式で date() を実行します。

于 2012-03-15T13:12:41.470 に答える
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));
}
于 2012-03-15T13:28:38.760 に答える
0

http://php.net/manual/en/function.strtotime.php#106043

公式ドキュメントとユーザーの貢献のリンクを参照してください...

于 2012-03-15T13:18:09.233 に答える
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));
于 2012-03-15T13:27:40.527 に答える