14

以下の形式でタイムスタンプをデータベースに入力したいと考えています。

yyyy-mm-dd hh:mm:ss

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

私が使うとき

$date = new Zend_Date();

月 dd, yyyy hh:mm:ss PMを返します

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

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

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

4

6 に答える 6

26

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

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

 // or, to show date only
 $date->get('YYYY-MM-dd') 
于 2011-06-01T13:29:47.993 に答える
13

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

そのためにPHPのネイティブdate関数を使用します。

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

またはDateTime 手続き型 API

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

またはDateTime オブジェクト API

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

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

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

于 2011-06-01T13:36:50.107 に答える
4

これが私がやった方法です:

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 日付のインスタンスであるかどうかを気にする必要はありません。文字列やその他の日付を渡すことができます。

于 2011-06-01T20:08:00.393 に答える
3

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

于 2012-10-23T18:56:31.817 に答える
1

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

于 2013-04-01T02:33:20.727 に答える
0

私は$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を参照してください。

于 2013-11-01T16:27:02.260 に答える