試してみたところ、
date_create_from_format('Ym','201302')
そして、今日は 29 日なので、実際には 3 月 1 日に返されます。
私は戻ってくることを望んでいました2013-02-01 00:00:00
。
日付を「正しく」解析する別の関数はありますか? そうでない場合は、大したことではなく、自分で抽出できます。
format
に文字が含まれていない場合は!
、生成された時刻の指定されていない部分がformat
現在のシステム時刻に設定されます。
format
文字 が含まれている場合!
、生成された時刻の で提供されていない部分と、format
の左側の!
値は、Unix エポックの対応する値に設定されます。Unix エポックは 1970-01-01 00:00:00 UTC です。(日時マニュアル)
したがって、文字列!
の先頭に a を追加するとformat
、問題が解決するはずです。
TheWolf のソリューションは完璧に機能しているようですが、とにかく書き始めた別の方法を次に示します。
function CompactStrToTime($str) {
$year = strlen($str)>=4 ? substr($str,0,4) : date('Y');
$month = strlen($str)>=6 ? substr($str,4,2) : 1;
$day = strlen($str)>=8 ? substr($str,6,2) : 1;
$hour = strlen($str)>=10 ? substr($str,8,2) : 0;
$min = strlen($str)>=12 ? substr($str,10,2) : 0;
$sec = strlen($str)>=14 ? substr($str,12,2) : 0;
return mktime($hour,$min,$sec,$month,$day,$year);
}