在 DateTime 中添加 1 周以创建到期日期时间

Add 1 Week in DateTime to Create Expiry DateTime

我正在以下列格式从数据库中保存 Date/Time,

$date_time = date("j M, Y, g:i a");  //1 Feb, 2015, 12:00 am

寻找在 $date_time 中添加 7 天的解决方案来创建到期日期,尝试了 Whosebug 上讨论的几种解决方案,但其中 none 对我有用,

我们将不胜感激任何帮助。谢谢

已编辑
@panther 回答部分仅适用于 Date

    $date_time = date("j M, Y");

但 Date/Time

$date_time = date("j M, Y, g:i a");

增加 7 天

    $end_date  = date("j M, Y, g:i a", strtotime($date_time . ' + 7 days'));

将 return 结果“1969 年 12 月 31 日,12:00 上午”
所以我尝试只用 Date 来计算差异(在 PHP While 循环中)

        <?php if ($end_date>$date_time) { ?>
        Expired
        <?php } else { ?>
        Active
        <?php } ?>

它没有用,它要么将所有记录设置为有效或已过期,

所以我回到 Sqaure 1。

注意: 我试过 UNIX_TIMESTAMP 但最终结果相同,将所有记录设置为有效或已过期。

试试这个:

$date_time = date("j M, Y, g:i a");
$end_date  = date("j M, Y, g:i a", strtotime($date_time . ' + 7 days'));

使用 DateTime 也是一个不错的选择:

$date_str = "..."; // from database
$date_format = "j M, Y, g:i a";
$expire_date = DateTime::createFromFormat($date_format, $date_str);
$expire_date = $expire_date->add(DateInterval::createFromDateString('+7 days'));

如果您需要将其格式化回字符串:

$expire_date->format($date_format);

您可以尝试使用 PHPs DateTime 对象来获取当前时间

$date_time_obj = new \DateTime();
$date_time = $date_time->format('j M, Y, g:i a');

然后使用add()方法获取你的到期时间

$end_date_obj = clone $date_time_obj;
$end_date_obj = $end_date_obj->add(new \DateTimeInterval('P7D'));
$end_date = $end_date_obj->format('j M, Y, g:i a');

比其他答案复杂一点,我知道 :) 但也许将来会更有帮助!

干杯