在CakePHP 2.x中有效地添加1个月到当前日期

时间:2016-03-12 19:38:25

标签: cakephp cakephp-2.3

在CakePHP中添加到期日期的最佳方法是什么?

我的数据库中有一个“到期日期”列,我想在当前日期添加1个月,然后存储。目前,我只是使用字符串和普通的PHP日期函数来创建一个新的日期字符串来保存:

$date = date("Y-m-d");
$date = strtotime(date("Y-m-d", strtotime($date)) . " +31 days");
$this->data['Access']['expires'] = $date;

是否存在“更多CakePHP”方式或效率/性能明智?

1 个答案:

答案 0 :(得分:0)

性能方面,我们最有可能充分讨论微优化问题,因此可能不应该是您的主要关注点。但是,你在那里做的所有来回都没有多大意义,只需拨打strtotime()就可以了,即

$this->data['Access']['expires'] = strtotime('+31 days');

这将导致时间戳“现在+ 31天”。

Cake-ish方式是使用CakeTime类,例如CakeTime::fromString(),如

App::uses('CakeTime', 'Utility');

$this->data['Access']['expires'] = CakeTime::fromString('+31 days');

当传递一个字符串(它也接受整数和\DateTime个实例)时,这基本上只是strtotime()的包装器,还有一个附加为你的应用程序设置的时区的附加机制,所以这个当然会慢一点,使用它可能仍然是明智的。

另见