-2

私はPHPプログラミングにかなり慣れていないため、奇妙な問題に直面しています。さまざまなフォーラムを通じて、さまざまな形式の日付を目的の形式に変換する方法を学ぶことができましたが、今日はこれが不可能で、常に1月1日が与えられました。以前はうまく機能していたので、変数に与えたものは奇妙でした。私のコードは次のとおりです。

次のように、日付と strtotime の PHP 関数を組み合わせて使用​​しています。

$coll_date_1[$i] = $row->coll_date_1;   //this is 08-08 i.e 8 Aug

$coll_date_1[$i] = date('d M',strtotime($coll_date_1[$i]));  //this return 01 Jan

1 行目はデータベースの値を変数に代入し、2 行目はそれらを目的の形式に変換する関数です。私はばかげた間違いをしていることを知っていますが、それがどこにあるかを特定することはできません...

4

3 に答える 3

3

これ08-08は、有効な日付形式ではないために発生します。

のように「偽の」年をその前に追加する2000-08-08か、現在の年を のよう2013-08-08に追加してみてください。

$coll_date_1[$i] = 'YEAR-'.$row->coll_date_1; // "YEAR" could be "2000" or the current year
date('d M', strtotime($coll_date_1[$i]));

とにかく、適切な形式で日付を処理するようにデータベースを変更する必要がありますYYYY-MM-DD。たとえば、MySQL ではdate型フィールドを使用します。

編集:

データベース構造を変更できないが、PHP 5.3+を使用している場合は、DateTimeクラスを使用して日付を次のように解析できます。

DateTime::createFromFormat('m-d', $row->coll_date_1)->format('d M');
于 2013-08-07T12:19:37.563 に答える
2

次を使用して形式を指定できますDateTime::createFromFormat

$date = DateTime::createFromFormat("m-d","08-08")//Switch to "d-m" as needed
$date->format("d M");

これにより、ビフォア フォーマットとアフター フォーマットの変更が容易になります。

編集:指摘されているように。列を適切な日付または日時として保存することを検討してください。これにより、必要に応じて DB の日付関数を利用できるようになります。

于 2013-08-07T12:24:08.897 に答える
0

//これは 08-08、つまり 8 月 8 日です

それはする必要がありますが2013-08-08。データベース フィールドを適切な形式に
変更します。問題が解決しました。

于 2013-08-07T12:19:52.220 に答える