使用DateTime将日期设置为当前并修改它

时间:2013-08-02 17:54:39

标签: php datetime

我正在尝试1)将变量设置为当前日期2)将其格式化为Y-m-d和3)修改它以查找过去7天的日期。

以下是我用来执行此操作的代码:

$date = new DateTime(); // get current date
$date->format('Y-m-d'); // format it 
$wow_date = $date->modify('-7 days'); // find 7 days before current date

当我运行这个时,我得到一个500错误代码,但无法解决为什么会发生这种情况。如果有人能指出我正确的方向,我将非常感激。

更新

感谢您的帮助/评论。以下是我最终选择的内容:

$date = new DateTime(null, new DateTimeZone('America/Los_Angeles')); // get current date
$m_date = $date->format('Y-m-d'); // set it in format I need for queries
$wow_date = $date->modify('-7 days'); // get 7 days before
$m_wow_date = $wow_date->format('Y-m-d'); // format earlier date 

4 个答案:

答案 0 :(得分:0)

this SO帖子中回答:

$date = date('Y-m-d', strtotime('-7 days'));

或使用DateTime类:

$date = new DateTime('7 days ago');
echo $date->format('Y-m-d');

答案 1 :(得分:0)

如果您想使用面向对象的样式,请尝试使用

$date->sub(new DateInterval('P7D'));

这是php.net

答案 2 :(得分:0)

如果您的最终目标是一个包含一周前格式化日期的String类型的变量,那么您可以在一行中完成所有操作: -

$formattedDate = (new \DateTime())->modify('-7 days')->format('Y-m-d');
echo $formattedDate;

See it working

答案 3 :(得分:-1)

您需要为应用程序配置默认时区。

尝试在php.ini取消注释中找到它或添加以下行:

[Date]
; Defines the default timezone used by the date functions
date.timezone = "America/Los_Angeles"

或者在使用DateTime Class之前通过php脚本:

date_default_timezone_set('America/Los_Angeles');

PHP MANUAL

找到您想要的时区