2012-07-16 96 views
1

請隨時回答問題的部分內容,無論您有任何答案。如何正確處理使用CakePHP的時間戳?

隨着新的2.2版本的蛋糕,時區更好地支持,這是完美的時機,因爲我正在研究一個非常「時間敏感」的應用程序。盡我所能嘗試,我根本無法讓一切工作。所以這裏是我的問題:

應該datetime條目(認爲創建/修改)存儲在UTC?如果是這樣,確保蛋糕使用UTC最有效的方法是什麼?

時間戳(精確的時刻)應該存儲爲一個int或作爲一個時間戳在MySQL?

使用新的蛋糕,我該如何自動將UTC int/timestamps轉換爲默認網站時區?用戶時區(存儲在他們的用戶元組中)?

如果將datetime(created/modified)時間存儲爲UTC,那麼如何使用cake將它們轉換爲默認網站時區?用戶時區?

謝謝!

回答

2
  1. 如果您想爲您的網站用戶自定義時間設置,那麼您應該使用全球時間設置,即UTC格式。以UTC格式保存到數據庫中。在你的app/Config/core.php中,你會發現下面這行。

    date_default_timezone_set('UTC'); // at line 232 
    

    因此,您可以確認cake將使用UTC時間格式,同時將時間節省到數據庫中。

  2. 下列項目總結之前的MySQL 4.1.2 TIMESTAMP初始化和更新屬性:

    在錶行自動設置爲當如果列被設置爲在創建該記錄的當前時間戳所述第一時間戳列NULL或根本沒有指定。

    除非明確指定TIMESTAMP列的值不爲NULL,否則表格行中的第一個TIMESTAMP列會自動更新爲當前時間戳,此時該行中的任何其他列的值都會更改。

    如果在創建表時爲第一個TIMESTAMP列指定了DEFAULT值,它將被靜默忽略。

    表中的其他TIMESTAMP列可以通過給它們分配NULL來設置爲當前TIMESTAMP,但它們不會自動更新。

我認爲,如果您不想自動更改時間戳,最好在整數字段中保存時間戳。

+0

感謝您的回覆,這肯定會縮小一些問題。我發現避免'TIMESTAMP'的自動特性非常容易(允許該字段爲空),但我同意這種自動行爲使事情變得複雜......並且看起來真的很糟糕。確切的考慮。 至於第一部分,這有助於該部分。謝謝! – xtraorange 2012-07-17 06:30:54