13

簡単に言うと、PHP では 2011 年 1 月 8 日の日付が 08-01-11 の形式で表示されます。これを strtotime に実行して別の日付形式に変換すると、2011 年 8 月 1 日に戻ります。理想的ではありません。

すべてを別の配列/変数に配置して元に戻すのではなく、これを回避する簡単な方法はありますか?

ありがとうございました!

4

3 に答える 3

28

完璧な解決策は、米国が最初に正しい日付形式を使用することです... ;0)

私はそれを回避するためにこれを行います:

$date = "31/12/2012";
$bits = explode('/',$date);
$date = $bits[1].'/'.$bits[0].'/'.$bits[2];

$datestrtotimeできるようになりました

于 2013-01-14T22:48:26.557 に答える
14

PHPマニュアルから:

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

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

スラッシュをダッシュ​​に置き換えたところ、英国の日付で strtotime が期待どおりに機能しました。

于 2012-09-26T11:51:14.683 に答える
11

strtotime() 米国の日付のみで動作します:

この関数は、米国英語の日付形式を含む文字列が与えられることを想定しており、その形式を解析して Unix タイムスタンプを作成しようとします。

日付形式を再配置するか、date_parse_from_format()(PHP 5.3+) を使用して英国スタイルの文字列を解析する必要があります。

于 2010-11-12T10:29:56.730 に答える