0

私の(非公開の)アプリケーションでは、ユーザーが日付/時刻を任意の形式で入力し、strtotime() と date() を使用して、DB ストレージの YYYY-MM-DD に変換できるようにしたいと考えています。これにはいくつかの欠点があることを知っています (1/1/13 と 1-1-13 がロケールに基づいてどのように処理されるかなど)。

ただし、解決しなければならない問題が 1 つあります。それは、ある特定のアプリケーションで 1970 年より前の日付を処理することです。明らかな理由から、strtotime() はうまく機能しません。日付ピッカーを使用できることは知っていますが、これを処理するより適切な方法があり、これまで行ってきたことを実行できるが、より広い範囲の日付を処理できるかどうか疑問に思いました。

4

1 に答える 1

0

これを投稿した後、追加のテストを行いましたが、現在取り組んでいるシステム (Ubuntu 12.04 64 ビット) では、早期に問題はないようです..おそらくこれは 64 ビットのものですか?

print date( "Y-m-d", strtotime( "May 5, 1820" ));

1820-05-05希望どおりに印刷されますが、期待どおりではありません。これが、実行している Linux のバージョンに関係しているのか、実行している PHP のバージョンに関係しているのか、それ以外に関係しているのかはわかりません。しかし、過去にこのように機能したことがないので、このような日付を扱うのは必ずしも快適ではありません.

私は DateTime オブジェクトを見つけたので、特に、より広い範囲の日付を処理することになっているため、そのアプローチを使用すると思います。

$date = new DateTime( "May 5, 1820" );
print $oop->format( "Y-m-d" );

他の誰かがこれに対してより良い、またはより正しい解決策を持っている場合に備えて、私の答えは少し受け入れられないままにします。

于 2013-09-16T02:20:52.637 に答える