【问题标题】:PHP date() returns odd valuesPHP date() 返回奇数
【发布时间】:2010-03-18 20:28:40
【问题描述】:
echo date("W",strtotime('2010-01-01'));

这输出 53。我希望它输出 1。其他人可以确认这种行为,或者解释原因吗?我找不到关于它的错误报告。

【问题讨论】:

    标签: php date


    【解决方案1】:

    这根本不是错误,而是预期的行为。来自 PHP 的Date Page:

    W:ISO-8601 一年中的周数,从星期一开始的周数

    2010 年 1 月 1 日是星期五,所以它的周数属于 2009 年,因此它是 2009 年第 53 周的一部分。2010 年 1 月 4 日是第 1 周。

    【讨论】:

    • 这回答了它,尽管我个人仍然认为这是一种奇怪的行为。 =D
    • @Toast:你认为第一周从星期五开始是正常的吗?
    【解决方案2】:

    从 12 月开始到次年 1 月结束的一周属于其大部分日子所在的年份。因此,12 月至少有 4 天的一周是当年的最后一周,而 1 月至少有 4 天的一周是新年的第一周。

    所以...一年的最后一周总是包含 12 月的第 28 天。如果您在给定年份的那一天取日期(“W”),您总是会得到该年正确的周数。该定义的另一端是一月的第四天总是在一年的第一周。

    【讨论】:

      【解决方案3】:

      它返回ISO-8601 week number of year

      来自Wikipedia

      第 1 周有相互等价的描述:

      • 包含一年中第一个星期四的那一周(正式的 ISO 定义),
      • 1 月 4 日所在的那一周,
      • 大部分(四天或更多)天在起始年份的第一周,并且
      • 从 12 月 29 日至 1 月 4 日期间的星期一开始的那一周。

      由于2010-01-01 是星期五,不满足任何条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2012-05-10
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        • 2016-02-16
        相关资源
        最近更新 更多