我使用下面的行创建当前的星期数。现在我想将当前的周数减去6周,所以我写了第二行来完成。
zip_file_add()
乍一看似乎可行,但是当我将日期设置为2018年1月1日时,变量six_weeks_ago返回-6,但必须为48。
谁可以帮助我解决此问题?
答案 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确实具有内置功能
来自手册:
<?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');
?>