特に年末に対処する場合、指定された日付の正しい数は難しい場合があります。既存の.NETメソッドは通常、ISO-8601標準を順守することはできず、一部の日付にエラーが割り当てられます。
間違ったエラーの週:たとえば、
.NETメソッドは、2012年12月31日に53日に標準に気付く場合がありますが、ISO-8601標準に応じてこれは間違っています。この違いは、ISO-8601はそうではありませんが、.NET許可週間に年間に及ぶことから派生しています。 解決策:
正しいISO-8601週を取得するには、次の機能を使用してください。
原則の説明:
この機能は、月曜日、火曜日、または水曜日の日付を調整して、次の木曜日、金曜日、または土曜日と同じ週を表すことを確認します。この方法は、ISO-8601規格を満たしています。これは、最初の週を木曜日の最初の週として定義します。例:
<code class="language-csharp">// 假设周从星期一开始。 // 第 1 周是当年包含星期四的第一周。 public static int GetIso8601WeekOfYear(DateTime time) { DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time); if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) { time = time.AddDays(3 - (int)day); } else if (day > DayOfWeek.Wednesday) { time = time.AddDays(10 - (int)day); } return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }</code>
2012年12月31日、これはチャレンジで言及されていましたが、この関数は1を返しました。これはISO-8601規格に従って正しい週です。
以上が特定の日付の正しい ISO-8601 週番号を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。