我在PHP的文档中看到,有两种方法可以用4位数格式化年份值:
Y-年份的全数字表示,4位数 O- ISO-8601年号。该值与Y值相同,但如果ISO周号(W)属于前一年或下一年,则使用该年。(在PHP 5.1.0中添加)
我研究了更多的ISO-8601是什么,它似乎更“有用”,甚至更准确(?)基于php的文档。我认为它更有用,因为它可以防止歧义(比如处理日期值,比如1981-04-05)。
但这真的有区别吗?有什么“最佳实践”吗?'o‘慢吗?这就是为什么人们在没有做任何复杂的约会时使用Y的原因吗?
有什么具体的用例可能有用吗?
谢谢你的帮助。
编辑:谢谢杰森举个例子!我想我为什么要提这个,我在想为什么不一直用'o‘呢?我想我应该一直使用“o”来进行当前未知的未来规范,这将要求我执行更复杂的日期操作。
发布于 2012-06-11 16:32:37
ISO 8601是表示日期的一个非常有用的标准,但是它有几个组件,并不是所有组件都对许多目的有用。特别是,"ISO周“和"ISO年”可能是稍微令人困惑的术语,它们通常不是您真正想要使用的术语(如果您确实想使用它们,您可能已经知道了)。
维基百科有一个很好的解释。基本上,ISO 8601标准定义了一个单独的日历,它不是分解为月份的几个月和几天,而是分解为一周或几天。
您可能认为这对于指定年份并没有什么区别,但是有一点小问题:日历年开始和结束时的几周适合哪一年?正如维基百科所言,这并不是很直观的:“ISO年的第一周是包含日历年第一个星期四的一周。”
的实际结果:,如果您将日期表示为传统的年-月-日值,则不希望使用"ISO年“(o)。你不会注意到一年中大部分时间的不同,但是当你到了十二月和一月的时候,突然之间你会(有时)有一年的假期。如果您只是用当前日期测试您的系统,您可能很容易错过这一测试。
相反,您可能只想使用普通的旧Y-m-d。尽管date()文档没有具体说明这一点,但这是一个完全有效的ISO8601标准日期。
实际上,只有当您使用ISO“周日期”日历时才应该使用o (这意味着您可能也使用W作为周号,而N用于一周一天)。
发布于 2012-06-11 16:17:16
在试图确定当前周(即日历周)的年份时,将使用o。
Y将用于特定日期的年度产出。
下面的代码片段显示了这一点:
date('Y v. o', strtotime('2012-12-31')); // output: 2012 v. 2013并不是说它是最佳实践,但Y更常用于输出年份。如前所述,o输出这样的边界日期的年份是不正确的/令人困惑的。
https://stackoverflow.com/questions/10983862
复制相似问题