【发布时间】:2016-11-08 18:25:38
【问题描述】:
我最近遇到了一个应用程序https://entire.life,它显示了一个如下图所示的日历,其中显示了你生命中每一年的一行点。
点行宽 52 点,该行一年每周 1 个点。
每一行是一年。
每一行的第一个点周日期从您出生日期的那一周开始,而不是从一年的 1 月 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 日开始。
使用 PHP 的 DateTime 函数,我如何根据用户的出生日期确定 52 周中每一周的开始和结束日期?
此处示例中的我的生日是 1983 年 4 月 21 日 第 1 年的周点表示基于该开始日期的这些日期:
第一行年份点
- 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 岁
第二行年份点
- 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 岁
【问题讨论】:
-
我投票决定将此问题作为题外话结束,因为它表明尝试解决问题的努力为零。基本上你是在问“你能为我写这段代码吗?”