1

01-01-12が2012年の1月1日になるように、この日付形式のdmyを文字列に設定しています。

ここで、これをphpの日付オブジェクトに変換して、配列に文字列として格納されている一連の日付を並べ替えたいと思います。

現在、strtotimeとdateを使用しています

$keypoints[] = date('d-m-y', strtotime($date_str));

ただし、これは、形式がymdであるかのように結果の日付を並べ替えています。問題は、strtotime関数の入力形式をどのように設定できるかということです。

前もって感謝します

4

5 に答える 5

3

PHP の strtotime() は UNIX タイムスタンプを返しますが、これは単なる数値です。これらを配列に格納し、そのようにソートすることを検討しましたか? 出力などの必要に応じて、見栄えの良い日付に変換し直します。

于 2012-10-30T10:31:09.210 に答える
2

strtotime のバックスラッシュ付きの日付は m/d/y として読み取られ、- が含まれる日は dmy として読み取られます。

マニュアルから:

ノート:

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

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

于 2012-10-30T10:34:21.103 に答える
1

できません。01-01-12 日付を爆発させ、結果の断片を mktime() で使用して、正しい unixtime を取得します。

于 2012-10-30T10:31:07.460 に答える
1

PHP マニュアル ページから、strtotime「日付/時刻文字列。有効な形式については、日付と時刻の形式で説明されています」を受け入れます。

代わりに を使用することもできますDateTime::createFromFormat

于 2012-10-30T10:31:38.413 に答える
1

これを試して、日付をY-m-d形式で取得してください

$date_arr = explode('-', $date_str);
$keypoints[] = date("Y-m-d", mktime(0, 0, 0, $date_arr[1], $date_arr[0], $date_arr[2]));
于 2012-10-30T10:35:09.823 に答える