如何使用CakePHP正确处理时间戳?

时间:2012-07-16 18:17:07

标签: cakephp datetime timezone timestamp cakephp-2.0

请随意回答部分问题,无论您有什么答案。

使用新的2.2版蛋糕,时区得到更好的支持,这是一个完美的时机,因为我正在开发一个非常“时间敏感”的应用程序。尽管我可能会尝试,但我根本无法让一切工作。所以这是我的问题:

日期时间条目(想象创建/修改)是否应以UTC格式存储?如果是这样,确保蛋糕使用UTC的最有效方法是什么?

时间戳(精确时刻)是应该作为int存储还是作为mysql中的时间戳存储?

使用新蛋糕,如何自动将UTC int / timestamp转换为默认站点时区?用户时区(存储在用户元组中)?

如果将datetime(创建/修改)时间存储为UTC,如何使用cake将它们转换为默认站点时区?用户时区?

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 如果要自定义站点用户的时间设置,则应使用全局时间设置,即UTC格式。以UTC格式保存到数据库中。在你的app / Config / core.php中,你会找到以下行。

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

    因此,您可以确认蛋糕将使用UTC时间格式,同时节省数据库的时间。

  2. 以下各项总结了MySQL 4.1.2之前的TIMESTAMP初始化和更新属性:

    如果列设置为NULL或根本未指定,则表行中的第一个TIMESTAMP列会自动设置为创建记录时的当前时间戳。

    当行中任何其他列的值发生更改时,表行中的第一个TIMESTAMP列会自动更新为当前时间戳,除非显式地为TIMESTAMP列指定了非NULL值。

    如果在创建表时为第一个TIMESTAMP列指定了DEFAULT值,则会以静默方式忽略该值。

    表中的其他TIMESTAMP列可以通过为它们分配NULL来设置为当前TIMESTAMP,但它们不会自动更新。

  3. 我认为,如果您不想自动更改时间,最好将时间戳保存在整数字段中。