我有一个日历应用程序,它利用了较新的PHP DateTime类。我有处理经常性项目的方式,但它似乎砍十岁上下,我想看看,如果你们有更好的想法:PHP 5.3重复事件的日期时间
- 我有开始11/16/2009重复发生的事件(11月16日, 2009)
- 将每3天
- 发生的事件将再次发生无限期
比方说,用户查看日历十二月,3100 - 此事件应显示有每3天重复正常人一样。问题是 - 我如何计算那个月的那些日子?
=========================================
这就是我基本上做到这一点,但我知道我失去了一些东西简单:
- 我计算差值在天月初之间看(12月1日,3100)和事件开始日期(2009年11月16日)存储为$ daysDiff
- 我减去模数,以便从开始时获得3天的系数,如下所示:$ daysDiff - ($ daysDiff%3)
- 为了争论起见,让我说31月11日,31日为我的日期。
- 我再用3天添加到那个日期,直到我有内十二月3100所有日期
我的主要问题来自步骤1. PHP DateInterval :: date_diff功能不计算天数的差异。它会给我几年,几个月和几天。 11/16/2009 +(1090年* 365.25天)+(9个月* 30.5天)+ 15天
当你去真正的时候像9999年这样的未来,这个估计可能会关闭一个月,然后我必须减去很多3天的时间间隔才能获得我需要的地方。
...当然,Unix时间戳的事情不会对全年工作3100除非你用64位运行。 – keithjgrant
嗨基思 - 我喜欢你用这种方式思考的方式,但那不幸对我来说也是一个限制(在32位上)。这似乎是直接“数学”与这些日期不能完成,检查我的“fudging”方式做到这一点 – John
它确实如果您在时间戳前面放置一个'@',如下所示:new DateTime('@' 。$时间戳); 哇,没意识到这是09年的最后一次活动....对不起。 – Adam