2011-06-01 126 views
11

我想輸入一個時間戳,格式爲數據庫。PHP Zend日期格式

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 *

謝謝回答

+1

你使用'Zend_Date'爲別的?或者你只是想用它格式化一個時間戳? – Gordon 2011-06-01 13:23:15

+3

你問過之前是否提到過該手冊? http://framework.zend.com/manual/en/zend.date.constants.html – 2011-06-01 13:23:23

+0

@編碼-畸形是的,我稱爲手動但是,我發現這個** 2009-02-13T12:53:27 + 01:00 **。我不想在「T」和「+」之間簽字。 – maniclorn 2011-06-01 13:31:29

回答

22

不知道這是否會幫助你,但嘗試使用:

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

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

謝謝。它工作'$ date = new Zend_Date(); \t \t \t \t $ createdDate = $日期 - >的get( 'YYYY-MM-DD HH:MM:SS'); print($ createdDate);' – maniclorn 2011-06-01 13:34:59

+0

@maniclorn如果答案解決了你的問題,接受給定的答案被認爲是禮貌的。 – 2011-06-01 13:36:39

+0

我已經從窗體中的文本框中獲取了日期數據,類似於dd-mm-yy格式的'$ formData ['startdate']'。現在,如何使用上述代碼或任何其他技術以該格式進行轉換? – maniclorn 2011-06-01 13:43:44

12

技術上,@stefgosselin給correct answerZend_Date,但Zend_Date是剛開當前時間在一個共同的格式完全矯枉過正。與PHP本地日期相關的擴展相比,使用Zend_Date的速度非常慢並且非常麻煩。如果你不需要翻譯或本地化Zend_Date輸出(你顯然不),遠離它。

對此使用PHP's native date function

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框架提供,只是因爲它提供了它的常見錯誤。絕對沒有必要這樣做,事實上,如果您可以使用原生PHP擴展來獲得相同的結果,但是使用本地解決方案會更好。

此外,如果您打算在數據庫中保存日期,您是否使用任何DateTime related columns in your database?假設您使用的是MySql,則可以使用Timestamp列或ISO8601 Date列。

+3

我第二! ;)Gordon __always__最清楚。 – stefgosselin 2011-06-01 13:42:23

+0

@Gorden:我明白了。但是我想在'date_format(date_create(),'Y-m-d H:i:s');'的第一個參數中使用'$ formData ['startdate']'的數組值。即代替date_create()。 – maniclorn 2011-06-01 13:57:22

+0

@maniclorn抱歉,但我不會告訴你如何做到這一點。使用日期是PHP開發人員的基本知識。我的意思是沒有冒犯,但如果你不知道如何去做,你不應該使用Zend Framework,而應該首先掌握PHP基礎知識。請按照文檔的鏈接,並嘗試找出自己。這很容易,你學會如何做到這一點非常重要。 – Gordon 2011-06-01 14:03:53

2

這是我做的:

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日期的實例是否不必擔心,你可以在一個字符串或其他任何傳遞是日期。

3

使用Zend Date的一個簡單方法是在其業務對象中創建特定的函數,該函數允許參數化該函數的日期格式。你可以找到一個很好的例子,這個地址http://www.pylejeune.fr/framework/utiliser-les-date-avec-zend_date/

+0

「允許參數化該函數的日期格式」相當不清楚。你能改說嗎?另外,歡迎來到StackOverflow! – 2012-10-23 19:22:21

1

這是我做到了:
從這種格式 Zend_Date::now->toString('dd-MM-yyyy HH:mm:ss')
輸出爲「24-03-2012 13時02分01秒」
,你可以修改你的約會格式

0

我總是用過去$date->__toString('YYYY-MM-dd HH-mm-ss');方法,但今天沒上班。我得到的默認輸出「2013年11月1日下午十二時19分23秒」

所以今天我用$date->get('YYYY-MM-dd HH-mm-ss');如上所述。似乎已經解決了我的問題。

您在這裏可以找到輸出格式更多這方面的信息:http://framework.zend.com/manual/1.12/en/zend.date.constants.html