0

「dmY」形式を「Ymd」に変換しています

現在、私はこのコードを使用しています

$dp_date = '13-12-1901';
$formated_date = date("Y-m-d",strtotime($dp_date));

ただし、1901 年 12 月 14 日より前の日付では機能せず、この日付「1901 年 13 月 12 日」以降は正常に機能します。

ここで何が問題ですか?1900年より前の日付、または1901年14月12日より前の日付を特定するにはどうすればよいですか?

4

2 に答える 2

2

の既知の制限ですUnix timestamp

php.netで説明されているように:

strtotime()

この関数は、英語の日付形式を含む文字列が与えられることを期待し、その形式を解析して Unix タイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC からの秒数) に変換しようとします。 now が指定されていない場合は現在の時刻。

ところで、あなたがしたいのはの位置を置き換えるdことYだけで、文字列操作でそれを行うことができます。

アップデート

strtotime() には、1901 年 12 月 13 日金曜日 20:45:54 GMT から 2038 年 1 月 19 日火曜日 03:14:07 GMT までの範囲制限があります。PHP 5.1.0 より前のバージョンでは、この範囲は一部のオペレーティング システム (Windows) で 01-01-1970 から 19-01-2038 に制限されていました。

@MarkBaker https://stackoverflow.com/a/2872094/998096

彼は、「はるかに広い範囲の日付を扱うことができる PHP の datetime オブジェクトを使用する」ことを提案しました。

于 2013-09-02T19:20:28.227 に答える