私の理解では、Zend Framework で日付を処理する最善の方法は、データベースから Unix タイムスタンプとして日付を選択することです。
// SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table
$date = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP);
Oracle で日付を Unix タイムスタンプまたは ISO-8601 形式で選択する簡単な方法がないのは、実際には苦痛だと思いますZend_Date
。
しかし、PL/SQL で日付を UNIX タイムスタンプとして選択する関数を作成したので、実際にこれを実行できます。
を使用しZend_Db_Expr
て、日付を Unix タイムスタンプとして選択できるようになりました。
$select = $db->select()
->from(array('p' => 'products'),
array(
'product_id',
'product_date' => new Zend_Db_Expr('toUnixTimestamp(product_date)')
)
);
$results = $db->fetchAll($select);
ほとんどのRDMSにはタイムスタンプ機能があります。
$results をループして、タイムスタンプを Zend_Date オブジェクトに手動で変換する必要があるため、これは面倒です。
foreach($results as $result){
$productDate = new Zend_Date($result['product_date'], Zend_Date::TIMESTAMP);
echo $productDate->toString('dd/MMM/yyyy HH:mm:ss');
}
タイムスタンプがすでに Zend_Date に変換されている $results をモデルに返してもらいたいです。これを行うために、すべてのデータアクセス関数にループを記述する必要はありません。
だから私の実際の質問のポイントに到達するには:
Zend_Db を使用して、結果セットにある種の後処理を設定し、タイムスタンプを Zend_Date オブジェクトに自動的に変換する方法を知っている人はいますか?