createFromFormat の動作に混乱しています。
private function _event_date($eventdate) {
$this->_logger->err($eventdate);
$dt = new DateTime();
$dt->createFromFormat(DATE_ISO8601, $eventdate);
$formatted = $dt->format("m/d/Y");
$this->_logger->err($formatted);
return $formatted;
}
_event_date を数回呼び出します。新しい DateTime オブジェクトを作成すると、$eventdate が受け入れられ、新しい書式設定された日付になることを期待しています。
奇妙なことに(私にとって)、私の出力は次のようになります。
2013-04-04 15:10:26 UTC error _event_date 2013-04-05T21:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-12T20:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-16T18:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-17T19:30:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
2013-04-04 15:10:26 UTC error _event_date 2013-04-18T20:00:00-0400
2013-04-04 15:10:26 UTC error _event_date 04/04/2013
何らかの理由で、DateTime が元の $eventdate 値を保持しているようです。
どうしてこれなの?createFromFormat の仕組みについて何か誤解していますか? PHP のオブジェクト モデルについて何か不足していますか? PHP は私の飲み物に何かを入れましたか?
- - - - - - - 答え - - - - - - - -
以下のMarc Bの答えは問題を解決します:
// month/day/year
private function _event_date($eventdate) {
$this->_logger->err($eventdate);
$dt = DateTime::createFromFormat(DATE_ISO8601, $eventdate);
$formatted = $dt->format("m/d/Y");
$this->_logger->err($formatted);
return $formatted;
}
正しい結果が得られます。
2013-04-04 15:34:56 UTC error _event_date 2013-04-04T19:30:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/04/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-05T21:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/05/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-12T20:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/12/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-16T18:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/16/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-17T19:30:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/17/2013
2013-04-04 15:34:56 UTC error _event_date 2013-04-18T20:00:00-0400
2013-04-04 15:34:56 UTC error _event_date 04/18/2013