도전:
특정 날짜의 정확한 주 수를 결정하는 것은 까다로울 수 있으며, 특히 연말 날짜를 처리할 때 더욱 그렇습니다. 기존 .NET 방법은 종종 ISO-8601 표준을 준수하지 못하고 일부 날짜에 잘못된 주 번호를 할당합니다.
잘못된 주 번호:
예를 들어 .NET 접근 방식은 2012년 12월 31일을 53주차로 표시할 수 있지만 이는 ISO-8601 표준에 따르면 올바르지 않습니다. 이러한 차이점은 .NET에서는 몇 주가 몇 년에 걸쳐 허용되는 반면 ISO-8601에서는 허용되지 않는다는 사실에서 비롯됩니다.
해결책:
올바른 ISO-8601 주 번호를 얻으려면 다음 기능을 사용하세요.
// 假设周从星期一开始。 // 第 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); }
원리 설명:
이 기능은 날짜가 월요일, 화요일 또는 수요일에 해당하는 경우 날짜를 조정하여 다가오는 목요일, 금요일 또는 토요일과 동일한 주를 나타내도록 합니다. 이 방법은 1주차를 목요일이 포함된 첫 번째 주로 정의하는 ISO-8601 표준을 준수합니다.
예:
챌린지에서 언급된 2012년 12월 31일 날짜에 대해 이 함수는 ISO-8601 표준에 따른 올바른 주 번호인 1을 반환합니다.
위 내용은 특정 날짜에 대해 올바른 ISO-8601 주 번호를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!