0

我正在尝试 1)将变量设置为当前日期 2)将其格式化为 Ymd 并 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

4 回答 4

0

如果你想使用面向对象的风格,试试这个

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

这是来自php.net

于 2013-08-02T18:01:09.030 回答
0

在这个SO 线程中回答:

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

或使用 DateTime 类:

$date = new DateTime('7 days ago');
echo $date->format('Y-m-d');
于 2013-08-02T17:58:40.417 回答
0

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

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

看到它工作

于 2013-08-03T06:15:52.553 回答
-1

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

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

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

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

date_default_timezone_set('America/Los_Angeles');

在PHP MANUAL中找到您想要的时区

于 2013-08-02T18:01:52.367 回答