PHP:如何从当前一周提取6周?

时间:2018-07-13 20:49:05

标签: php

我使用下面的行创建当前的星期数。现在我想将当前的周数减去6周,所以我写了第二行来完成。

zip_file_add()

乍一看似乎可行,但是当我将日期设置为2018年1月1日时,变量six_weeks_ago返回-6,但必须为48。

谁可以帮助我解决此问题?

3 个答案:

答案 0 :(得分:3)

$six_weeks_ago = ($curr_weeknr + 51 - 6) % 52 + 1;

或者:

$date = new DateTime($date);
$date->modify("-42 days");
$six_weeks_ago = $date->format("W");

答案 1 :(得分:1)

当然,问题在于$curr_weeknr只是一个数字。因此,如果当前星期数为1,则当减去时将得到负数。

相反,您应该让PHP为您完成日期数学运算。 date_sub()函数可实现您想要的功能-它减去日期。

例如:

$six_weeks_ago = date_sub($date_today, date_interval_create_from_date_string("6 weeks"));
print $six_weeks_ago->format("W");

答案 2 :(得分:0)

我个人喜欢评论[现在的答案] $six_weeks_ago = ($curr_weeknr + 52 - 6) % 52;,我认为这样做最快。

php确实具有内置功能

date_sub

来自手册:

<?php
    $date = date_create('2000-01-20');
    date_sub($date, date_interval_create_from_date_string('10 days'));
    echo date_format($date, 'Y-m-d');
?>

更改值:

<?php
    $date = date_create('2000-01-20');
    date_sub($date, date_interval_create_from_date_string('6 weeks'));
    echo date_format($date, 'Y-m-d');
?>