1

試してみたところ、

date_create_from_format('Ym','201302')

そして、今日は 29 日なので、実際には 3 月 1 日に返されます。

私は戻ってくることを望んでいました2013-02-01 00:00:00

日付を「正しく」解析する別の関数はありますか? そうでない場合は、大したことではなく、自分で抽出できます。

4

2 に答える 2

5

formatに文字が含まれていない場合は!、生成された時刻の指定されていない部分がformat現在のシステム時刻に設定されます。

format文字 が含まれている場合!、生成された時刻の で提供されていない部分と、formatの左側の!値は、Unix エポックの対応する値に設定されます。

Unix エポックは 1970-01-01 00:00:00 UTC です。(日時マニュアル)

したがって、文字列!の先頭に a を追加するとformat、問題が解決するはずです。

于 2013-09-29T20:48:32.243 に答える
0

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);
}
于 2013-09-29T20:55:32.837 に答える