2

varchar 型のデータベース列から、すべて d/m/y 形式の有効な日付があります。次に、strtotime 関数と日付形式で日付形式に変換しようとすると、01/01/70 になります。データベースの結果を単純な文字列値に置き換えようとさえしました。PHP strtotime は、日付列が null の場合に 1970 年の日付を返します PHP : strtotime() は常に 01/01/1970 を 返しますデータが null ではなく、有効な形式であるため、役に立ちませんでした。ここに私のコードのスニペットがあります

if(isset($item['prep_date']) && $item['prep_date'] != NULL){
    $trial=$item['prep_date'];
    echo ": ".$trial;
    $prepDate= strtotime($trial);
    $prepDate = date('d/m/y', $prepDate);
    echo "= ".$prepDate;
}

私は何が欠けていますか?これが2つのエコーの結果です

28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 03/01/13= 01/03/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 18/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 02/09/13= 09/02/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 28/10/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 28/10/13= 01/01/70: 28/10/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 11/12/13= 12/11/13: 11/12/13= 12/11/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 11/12/13= 12/11/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 30/01/14= 01/01/70
4

1 に答える 1

5

strtotime()返されたので、1970 年の値を取得しますfalse

var_dump( strtotime('28/11/13') ); # false

サポートされている日付と時刻の形式をご覧ください。ここstrtotimeに記載されているように、これはアメリカの月、日、年 ( mm/dd/yyyy) であると想定しています。

入力された形式がヨーロッパの日付形式にするためにorをdd/mm/yyyy使用するのが最も簡単な方法です。DateTime::createFromFormatstrtotimestr_replace('/', '.', 'dd/mm/yyyy');dd.mm.yyyy

于 2013-10-27T08:45:17.467 に答える