首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从PHP的任意日期开始,为一年中的每周生成开始日期和结束日期

从PHP的任意日期开始,为一年中的每周生成开始日期和结束日期
EN

Stack Overflow用户
提问于 2016-11-08 18:25:38
回答 1查看 203关注 0票数 2

我最近遇到了一个应用程序https://entire.life,它显示了一个日历,如下面的图片,其中显示了你生命中每一年的一排点。

这一行圆点宽52点,每周1点。

每行一年。

每一行第一周开始于你出生的那一周,而不是一年的一月一日。因此,每一行的周点为1年,开始和结束于您的生日周。

下面的最后一张图片显示,未来日期的周点将显示为灰色点,以表示这些周尚未发生。

下面是上面图片中的一个活生生的例子,以查看dit在实际操作中的https://entire.life/jason-davis

https://i.stack.imgur.com/ne07D.png

下面的图像显示了一个窗体,用于为单击的当前周点添加事件。

https://i.stack.imgur.com/K5BUT.png

这张图显示了未来日期的周点是灰色的。

https://i.stack.imgur.com/pYGAn.png

问题

使用PHP,我想根据用户的生日(如上面所示的应用程序)生成这样的日历。

下面是上面图片中的一个活生生的例子,以查看dit在实际操作中的https://entire.life/jason-davis

规则:

  • 生成一行代表一年中每周的点。
  • 为从用户出生日期年份开始的100年行生成上述周年份点中的一行。
  • 每一行的起始周点应该从用户出生日期周开始,而不是在一年的1月1日开始。

使用DateTime函数,如何根据用户的出生日期确定52周中每周的开始日期和结束日期?

在这个例子中,我的生日是1983年4月21日,根据这个开始日期,第一年的周点代表了这些日期:

第一行dots

  • 1983年4月21日至27日-0岁
  • 1983年4月28日至5月4日-0岁
  • 1983年5月5日至11日-0岁
  • 1983年5月12日至18日-0岁
  • 1983年5月19日至25日-0岁
  • 1983年5月26日至6月1日-0岁
  • 1983年6月2日至8日-0岁
  • 1983年6月9日至15日-0岁
  • 1983年6月16日至22日-0岁
  • 1983年6月23日至29日-0岁
  • ..。
  • .-.
  • 1984年3月29日至4月4日-0岁
  • 1984年4月5日至11日-0岁
  • 1984年4月12日至18日-0岁
  • 1984年4月19日至20日-0岁

第2行dots

  • 1984年4月21日至27日1岁-1984年4月28日至5月4日-1岁
  • 1984年5月5日至11日-1岁
  • 1984年5月12日至18日-1岁
  • 1984年5月19日至25日-1岁
  • 1984年5月26日至6月1日-1岁
  • 1984年6月2日至8日-1岁
  • 1984年6月9日至15日-1岁
  • 1984年6月16日至22日-1岁
  • 1984年6月23日至29日-1岁
  • ..。
  • ..。
  • ..。
  • 1985年3月29日至4月4日-1岁
  • 1985年4月5日至11日-1岁
  • 1985年4月12日至18日-1岁
  • 1985年4月19日至20日-1岁
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 18:32:32

就这样吧:

代码语言:javascript
代码运行次数:0
运行
复制
<?php 
   $userBirthDate = "1990-10-02"; // You probably use data from database or POST or GET, I setted a static one just for the example 
   $wishedDate = new DateTime($userBirthDate); // Here, you can add any desired date as an argument to DateTime, by default, it'll take the current DateTime.
   // This is for 100 years
   for ($x = 0; $x < 100; $x++){
     echo '<hr>'; // Just so every year will be separated by a html horizontal bar
     $limit = 52; // 52 for a year, but you could do as much as you need right there
     for ($i = 0; $i < $limit; $i++){
       echo $wishedDate->format('Y-m-d H:i:s'); // Write the current date
       echo '<br />'; // Just to switch line
       $wishedDate->modify('+1 week'); // Add one week to the wished date 
     }
   }
?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40493968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档