Jumlah yang betul dari tarikh yang diberikan mungkin rumit, terutama ketika berurusan dengan akhir tahun ini. Kaedah NET yang sedia ada biasanya tidak dapat mematuhi piawaian ISO-8601, dan ia akan memperuntukkan kesilapan untuk beberapa tarikh.
Minggu kesilapan yang salah:
Sebagai contoh, kaedah .NET mungkin melihat standard pada 31 Disember 2012 hingga ke-53, tetapi ini tidak betul mengikut piawaian ISO-8601. Perbezaan ini diperoleh dari minggu yang dibenarkan untuk menjangkau tahun ini, sementara ISO-8601 tidak. Penyelesaian:
Untuk mendapatkan minggu ISO-8601 yang betul, sila gunakan fungsi berikut:
Penerangan Prinsip:
Fungsi ini akan menyesuaikan tarikh pada hari Isnin, Selasa atau Rabu untuk memastikan ia mewakili minggu yang sama seperti Khamis, Jumaat, atau Sabtu yang akan datang. Kaedah ini memenuhi piawaian ISO-8601, yang mentakrifkan minggu pertama sebagai minggu pertama Khamis.
// 假设周从星期一开始。 // 第 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); }
Pada 31 Disember 2012, yang disebut dalam cabaran, fungsi ini kembali 1, yang merupakan minggu yang betul mengikut piawaian ISO-8601.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nombor Minggu ISO-8601 yang Betul untuk Mana-mana Tarikh Diberikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!