5

PHPのドキュメントで、年の値を4桁でフォーマットする方法は2つあることがわかりました。

Y-1年の完全な数値表現、4桁

o-ISO-8601の年番号。これはYと同じ値ですが、ISO週番号(W)が前年または翌年に属する場合は、代わりにその年が使用されます。(PHP 5.1.0で追加)

私はISO-8601が何であるかをさらに調査しましたが、phpのドキュメントに基づくと、より「有用」または正確(?)であるように思われます。あいまいさを防ぐので(1981-04-05のような日付値を処理するときのように)、より便利だと思います。

しかし、それは本当に違いを生むのでしょうか?ある種の「ベストプラクティス」はありますか?'o'は遅いので、日付で複雑なことを実際に行っていないときに、代わりにYを使用しますか?

これはおそらくどのような特定のユースケースに役立ちますか?

ご協力ありがとうございました。

編集:例をありがとうジェイソン!なぜ私もこれを持ち出したのかと思いますが、なぜいつも「o」を使用しないのか疑問に思っていますか?より複雑な日付操作を行う必要がある現在不明な将来の仕様には、常に「o」を使用する必要があると考えています。

4

2 に答える 2

4

o現在の週の年(つまり、暦週)を決定しようとするときに使用されます。

Y特定の日付の年の出力に使用されます。

これは、次のコードスニペットで示されています。

date('Y v. o', strtotime('2012-12-31'));  // output: 2012 v. 2013

それがベストプラクティスになるとは言いませんが、Yより一般的には年を出力するために使用されます。前述のように、そのような境界oの年を出力するのは正しくない/混乱します。

于 2012-06-11T16:17:16.653 に答える
2

ISO 8601日付を表すための非常に便利な標準ですが、いくつかのコンポーネントがあり、そのすべてが多くの目的に役立つわけではありません。特に、「ISO週」と「ISO年」は少し紛らわしい用語である可能性があり、実際に使用したいものではないことがよくあります(そして、それらを使用したい場合、おそらくすでにそれを知っています)。

ウィキペディアにはかなり良い説明があります。基本的に、ISO 8601標準は、月と曜日に分割するのではなく、週と曜日に分割する別個のカレンダーを定義します。

これは年を指定するのに違いはないと思うかもしれませんが、少ししわがあります。暦年の初めと終わりに近い週はどの年に当てはまりますか?ウィキペディアが言うように、それは完全に直感的ではありません。「[ISO]年の最初の週は、[カレンダー]年の最初の木曜日を含む週です。」

実用的な結果:日付を従来の年-月-日の値として表す場合は、「ISO年」()を使用しないoでください。1年のほとんどの期間、違いに気付くことはありませんが、12月と1月になると、突然(場合によっては)1年ずれの日付になってしまいます。現在の日付でシステムをテストするだけでは、これを簡単に見逃す可能性があります。

代わりに、おそらく単純な古いを使用したいだけですY-m-d。ドキュメントには具体的にdate()記載されていませんが、これは完全に有効なISO8601標準の日付です。

o実際には、ISOの「週の日付」カレンダーを使用している場合にのみ使用する必要があります(つまりW、週番号と曜日にも使用している可能性がありNます)。

于 2012-06-11T16:32:37.027 に答える