web-dev-qa-db-ja.com

PHP Zend日付形式

以下の形式でタイムスタンプをデータベースに入力したい。

yyyy-mm-dd hh:mm:ss

上記の形式で取得するにはどうすればよいですか?

使うとき

$date = new Zend_Date();

month dd、yyyy hh:mm:ss PMを返します。

また、JavaScriptカレンダーを使用して選択した日付を挿入すると、dd-mm-yyyy形式で返されます

ここで、これらの両方の形式をyyyy-mm-dd hh:mm:ssに変換して、データベースに挿入できるようにします。 日付形式がデータベースフィールド形式と一致しないため、日付は挿入されず、*00-00-00 00:00:00*

ご回答ありがとうございます

13
maniclorn

これが役立つかどうかはわかりませんが、次を使用してみてください。

 // to show both date and time,
 $date->get('YYYY-MM-dd HH:mm:ss');

 // or, to show date only
 $date->get('YYYY-MM-dd') 
25
stefgosselin

技術的には、@ stefgosselinはZend_Dateに対して 正解 を与えましたが、Zend_Dateは、現在の時刻を一般的な形式で取得するだけでは完全にやり過ぎです。 Zend_Dateは、PHPのネイティブの日付関連の拡張機能と比較して、非常に遅く、使用が面倒です。 Zend_Date出力で翻訳やローカリゼーションが必要ない場合(そして明らかに必要ない場合)は、それを避けてください。

PHPのネイティブdate関数 を使用します。例:.

echo date('Y-m-d H:i:s');

または DateTime procedural API

echo date_format(date_create(), 'Y-m-d H:i:s');

または DateTime Object API

$dateTime = new DateTime;
echo $dateTime->format('Y-m-d H:i:s');

Zend Frameworksが提供するすべてのコンポーネントを、それが提供するという理由だけで使用するというよくある間違いをしないでください。それを行う必要はまったくありません。実際、ネイティブPHP拡張機能を使用して、より少ないまたは同等の労力で同じ結果を達成できる場合は、ネイティブソリューションを使用することをお勧めします。

また、データベースに日付を保存する場合、 データベースのDateTime関連の列 のいずれかを使用しましたか? MySqlを使用していると仮定すると、Timestamp列またはISO8601Date列を使用できます。

13
Gordon

これは私がそれをした方法です:

abstract class App_Model_ModelAbstract extends Zend_Db_Table_Abstract
{

    const DATE_FORMAT = 'yyyy-MM-dd';

    public static function formatDate($date, $format = App_Model_ModelAbstract::DATE_FORMAT)
    {
        if (!$date instanceof Zend_Date && Zend_Date::isDate($date)) {
            $date = new Zend_Date($date);
        }

        if ($date instanceof Zend_Date) {
            return $date->get($format);
        }

        return $date;
    }
}

このようにして、実際にzend dateのインスタンスであるかどうかを気にする必要はなく、文字列または日付であるその他のものを渡すことができます。

4
Fatmuemoo

zend Dateを使用する簡単な方法は、ビジネスオブジェクトに特定の関数を作成して、この関数を日付形式にパラメーター化できるようにすることです。このアドレスの良い例を見つけることができます http://www.pylejeune.fr/framework/utiliser-les-date-avec-zend_date/

3
lothar

これは私がやったことです:
Zend_Date::now->toString('dd-MM-yyyy HH:mm:ss')
この形式からの出力は「24-03-201213:02:01」です
日付形式を変更できます

1
akubabas

以前は常に$date->__toString('YYYY-MM-dd HH-mm-ss');メソッドを使用していましたが、今日は機能しませんでした。 '2013年11月1日12:19:23 PM'のデフォルト出力を取得していました

そこで、今日は上記のように$date->get('YYYY-MM-dd HH-mm-ss');を使用しました。私の問題は解決したようです。

これについての詳細は、出力形式についてここで見つけることができます: http://framework.zend.com/manual/1.12/en/zend.date.constants.html

0
Lionel Morrison