【问题标题】:PHP strtotime() different results of monday this weekPHP strtotime() 本周星期一的不同结果
【发布时间】:2011-03-09 15:18:41
【问题描述】:

我在获取当前星期的星期一日期时遇到问题。

echo date('Y-m-d',strtotime('monday this week'));

当我在本地机器 (PHP 5.3) 上运行上述代码时,它会正确输出“2011-03-07”,但我的服务器 (PHP 5.2) 上的相同代码会输出“2011-03-14”(那是下周的星期一)。

我尝试在两台机器上运行 date('W') 并且得到相同的结果 (10)。

编辑:任何想法如何正确地工作?

提前致谢。

【问题讨论】:

  • 唯一的假设是您可能以不同的方式定义一周的开始......
  • 将服务器的日期设置为正确

标签: php strtotime


【解决方案1】:

使用 date('Y-m-d',strtotime(date('o-\\WW')));

【讨论】:

  • 救命稻草。特别是如果您无法升级到 php 5.3。
【解决方案2】:

并不是说我已经完全看到了这个问题,但我看到了非常相似的问题。 strtotime 似乎会在不同版本的 PHP 之间改变行为,并且除非进行简单的操作(例如 '+1 周'),否则很难保证功能会保持不变。

如果您无法升级到 5.3,正如正确指出的那样,这似乎是一种改进,我只能建议您使用一些排列。通过重新表述问题,通常可以从旧版本的 strtotime 中得到正确答案。示例可能包括...

  • 下周一-1周
  • 上周一+1周
  • 这个星期一

【讨论】:

    【解决方案3】:

    是的,strtotime 中的字符串解释在 5.3 中得到了显着改进。

    【讨论】:

      【解决方案4】:

      在服务器和本地桌面的 cli 提示符下运行命令“date”。这将验证操作系统是否在两个系统上看到相同的日期。

      【讨论】:

        【解决方案5】:

        你有两个选择:要么避免使用这个检查日期是否在未来的功能,如果是,你将它减少 7 天。欢迎来到 PHP 的世界。

        【讨论】:

          【解决方案6】:

          看看这个:

          “请注意,您不能仅依靠此函数来验证日期,因为它会接受像 2 月 31 日这样的疯狂日期。

          此外,“...周”功能本身可能无法达到您的预期。如果在星期日使用,'next week' 将不会返回下星期一的时间戳,而是返回之后的星期一的时间戳。类似地,当使用“上一周/上周”时,返回当前周星期一的时间戳,而“本周”返回下周星期一(即下一天)的时间戳。这不是“星期从星期日开始”效果,因为这意味着返回的所有时间戳都必须在星期日,而没有一个是。”

          今天是星期天,你会错的。

          【讨论】:

            【解决方案7】:

            这是另一种可行的解决方案(实际上是唯一对我有用的解决方案):

            $mondayOfWeek = date ('d M Y', strtotime($someDate) - ((date ('N', strtotime($someDate)) - 1) * 3600 * 24));
            

            【讨论】:

            • 超级延迟响应,但对于像我这样看到这个的其他人来说,这不是夏令时证明。新西兰 2018 年 9 月 30 日之前的 48 小时是 2018 年 9 月 27 日,而不是 28 日。将 strtotime 与“-x 天”一起使用会更好。
            【解决方案8】:
            $today = strtotime('This week monday 8 am');
            echo $this->unix_timestamp_to_human($today,"D M j G:i:s T Y");
            

            【讨论】:

              猜你喜欢
              • 2011-05-08
              • 1970-01-01
              • 2012-11-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-12-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多