周一+2周和周五+2周不在同一周

时间:2018-04-04 11:25:50

标签: php strtotime

我正在尝试为我需要的自定义日历创建动态页面

因为我不使用

每天40天重复所有代码
$days= ['Monday','Tuesday','Wednesday','Thursday','Friday'];

然后在for循环中

date($myvar) == date('Y-m-d',strtotime($days[$i].' this week'))

下周工作很棒

date($myvar) == date('Y-m-d',strtotime($days[$i].' next week')

但是=所有下一个都不正确

date($myvar) == date('Y-m-d',strtotime($days[$i].' +2 weeks'))

示例:今天 - 星期三== 04-04-2018,

星期一+2周== 2018-04-23

周五+2周== 2018-04-20

任何建议如何为循环而不是单个日期创建一个代码?

2 个答案:

答案 0 :(得分:3)

行为是一致的,而不是你想要的:

  • '星期一'它本身与下一个星期一'相同,这是第9次(下一次是星期一)
  • 类似地,'周五'是下周五',这是第6次(下次是星期五)
  • '星期一+1周'因此,下周一是+1周',所以第16次
  • '周五+1周'是下周五+1周',所以第13次

但是,您可以将更复杂的表达式链接在一起以获得所需的结果:

  • '下周一周一'是第9次
  • '下周一周+1周'是第16次
  • '下周一周末+2周'是第23次
  • '下周五'是第13次(下周的星期五,而不是下次星期五)
  • '下周五+1周'是第20个
  • '下周五+2周'是第27次

或类似地使用"本周":

  • '本周一周一'是第二个(本周的星期一,即使它在过去)
  • 所以,'本周一周末+2周'是第16个,依此类推。

答案 1 :(得分:1)

根据你的问题,周五表示2014-04-06,周一表示2014-04-09,所以答案是正确的。系统不知道它是星期一。

Monday(2018-04-09) +2 weeks == 2018-04-23
Friday(2018-04-06) +2 weeks == 2018-04-20