Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengira Hari Pertama Minggu Diberikan Nombor Tahun dan Minggu Menggunakan ISO 8601?
Pengiraan tarikh yang tepat berdasarkan standard ISO 8601
Mencari hari pertama minggu tertentu berdasarkan tahun dan nombor minggu mungkin kelihatan mudah, tetapi menjadi rumit jika anda menggunakan standard ISO 8601, yang menyatakan bahawa hari pertama dalam minggu itu ialah hari Isnin di Eropah, tetapi dalam standard Hari Khamis.
Untuk mengira tarikh dengan tepat, kami mula-mula menentukan Khamis pertama dalam tahun itu. Ini memastikan bahawa kita sentiasa berada dalam tahun yang betul, tidak kira sama ada minggu pertama dalam tahun itu merangkumi dua tahun kalendar.
Jika minggu pertama dalam tahun adalah minggu 1, tolak 1 daripada nombor minggu yang diberikan untuk mengambil kira perbezaan tarikh mula.
Akhir sekali, kami mendarabkan nombor minggu dengan 7 hari dan menambahnya pada Khamis pertama untuk mendapatkan hari pertama minggu yang ditentukan. Walau bagaimanapun, untuk mematuhi definisi ISO 8601, kami akan menolak 3 hari daripada Khamis yang terhasil untuk mendapatkan hari Isnin, iaitu hari pertama dalam piawaian.
Berikut ialah contoh melaksanakan konvensyen ISO 8601 dalam kod C#:
<code class="language-csharp">public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear) { DateTime jan1 = new DateTime(year, 1, 1); int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek; // 使用一月份的第一个星期四获取一年的第一周 DateTime firstThursday = jan1.AddDays(daysOffset); var cal = CultureInfo.CurrentCulture.Calendar; int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); var weekNum = weekOfYear; // 由于我们正在向第 1 周的日期添加天数, // 因此我们需要减去 1 才能获得第 1 周的正确日期 if (firstWeek == 1) { weekNum -= 1; } // 使用第一个星期四作为起始周确保我们从正确的年份开始 // 然后我们将周数乘以天数的结果相加 var result = firstThursday.AddDays(weekNum * 7); // 从星期四减去 3 天以获得星期一,这是 ISO8601 中的第一天 return result.AddDays(-3); }</code>
Menggunakan kaedah ini, anda boleh mengira dengan tepat hari pertama dalam seminggu berdasarkan nombor tahun dan minggu, memastikan pematuhan dengan piawaian ISO 8601.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hari Pertama Minggu Diberikan Nombor Tahun dan Minggu Menggunakan ISO 8601?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!