我是一个php和codeigniter的新手。PHP减去一周周日
我有一个函数可以用来标记骑自行车上每公里骑行的周数总和的图表的x轴。它从今天的日期开始计算(或应该工作),从数组传递零周日或1,2,3等等。
我使用的PHP版本5.6.19,这是我的代码:
在Model:
public function week_start($date, $counter){
$tstring = strtotime($date);
$wknumber = ($counter + 1);
$start = strtotime("-$wknumber weeks sunday", $tstring);
return array(date('M d', $start));}
在控制器:
$datenumbers = array(0, 1, 2, 3, 4, 5, 6, 7);
$dateResult = $this->bike_model->week_start(date("Y/m/d"), $datenumber);
在视图:
for ($i = 0; $i < 8; $i++){
echo "
echo 26 + ($i*70);
echo "\" dy = \".35em\">";
echo $dates_for_table[$i];}
我已经拥有它了几天后,它已经在7月3日星期日显示为我的x-axis上的第一个数字,因为它应该有。但今天是星期天,我预计它现在将在7月10日星期日称为最近一周。不过,它仍然在上周日展示!
所以我的问题是,这里有一个错误,或者我误解了'一星期周日'应该如何工作?
我的目标是使用零作为参数返回最近一周的开始 - 如果是星期日或过去的星期日,则为当前星期日。我找到了一个解决方法,通过添加一个if else来检查函数是否是星期天。
if ($tstring == strtotime('this Sunday')){
$wknumber = $counter;}
else{
$wknumber = ($counter + 1);}
但是,这感觉笨重,我正在寻找一个更优雅的方式。我还想了解“星期天一周”出了什么问题,因为我认为我已经理解它是如何工作的。
谢谢!
2016-07-10
Cyclist
+0
我看到你的旧代码有'$启动=(日期(“W”,$ tstring) == 0)? $ tstring:strtotime('上周日',$ tstring);'。这不是解决你的问题吗? –
+0
这段代码是我尝试过的,但它最终让我在整个x轴上的当前星期天。我已经在模型的笔记中留下了该代码,以便更深入地思考如何实施。 –
+0
我刚刚尝试了这个替代代码。基本上,问题在于它是在检查是否是星期天(是的!),如果是,则返回数组中每个值的今天日期。我能想到在轴上每个点上提前一周的唯一方法就是在原始问题底部的if/else语句。即使我现在的代码*看起来可以工作,我仍然没有打开这个问题,因为我仍然不清楚“ - $ i周周日”究竟是在做什么。除星期日之外,它每天都会给你上一个星期天,在这种情况下,它会给你当前的星期日吗? –