0

ドキュメントを読んで読み直しましたが、$date1がうまくいかない理由を本当に説明できません

誰かが助けることができますか?高く評価します

$date1 = "04-16-2013";
$date2 = "2013-04-16";
printf("date1 = %s\n", $date1);
printf("date2 = %s\n", $date2);

$newdate1 = date('m-d-Y',$date1);
$newdate2 = date('Y-m-d',$date2);
printf("newdate1 = %s\n", $newdate1);
printf("newdate2 = %s\n", $newdate2);

$previous_date = date('m-d-Y', strtotime($date1 .' -1 day'));
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day'));
printf("previous_date = %s\n", $previous_date);
printf("previous_date2 = %s\n", $previous_date2);

出力

 date1 = 04-16-2013
    date2 = 2013-04-16
    newdate1 = 12-31-1969
    newdate2 = 1969-12-31
    previous_date = 12-31-1969
    previous_date2 = 04-15-2013
4

2 に答える 2

1

strtotime関数

m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y と見なされます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

潜在的なあいまいさを避けるために、可能であれば ISO 8601 (YYYY-MM-DD) 日付またはDateTime::createFromFormat()を使用することをお勧めします。

あなたの場合、区切りダッシュ (-) php を使用しているため、日付形式が dmy であると考えてください。

または回避策:

$date1 = "04-16-2013";
$date2 = "2013-04-16";
printf("date1 = %s\n", $date1);
printf("date2 = %s\n", $date2);


$newdate1 = date('m-d-Y',strtotime(str_replace("-","/",$date1)));
$newdate2 = date('Y-m-d', strtotime($date2));
printf("newdate1 = %s\n", $newdate1);
printf("newdate2 = %s\n", $newdate2);


$previous_date = date('m-d-Y', strtotime(str_replace("-","/",$date1) .' -1 day'));
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day'));
printf("previous_date = %s\n", $previous_date);
printf("previous_date2 = %s\n", $previous_date2);
于 2013-04-16T23:14:35.873 に答える
0

あなたの場合にこれを試してください:

$date1 = "04-16-2013";
$date = date_create_from_format('m-j-Y', $date1);
echo date_format($date, 'd-m-Y');

最初に月-日-年を入力....次に、日-月-年を出力します

于 2013-04-16T23:05:19.840 に答える