Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengira Bilangan Hari Perniagaan Antara Dua Tarikh dengan Cekap dalam C#?
Cara mengira dengan cekap bilangan hari bekerja antara dua tarikh dalam C#
Mengira bilangan hari bekerja antara dua tarikh mengambil kira hujung minggu dan kemungkinan cuti. C# menyediakan beberapa cara untuk menyelesaikan tugas ini.
Penyelesaian yang dicadangkan menggunakan kelas DateTime
untuk mengelakkan penghitungan hari demi hari yang tidak cekap. Kaedah ini mengira bilangan hari bekerja dalam selang waktu tertentu dengan mengambil kira minggu penuh, hujung minggu separa dan cuti. Algoritmanya adalah seperti berikut:
.Date
untuk menukar tarikh input kepada objek DateTime
yang sepadan. TimeSpan
untuk mengira rentang antara tarikh dan menambah kiraan hari bekerja sebanyak 1 untuk setiap hari. Berikut ialah pelaksanaan penyelesaian:
<code class="language-csharp">public static int BusinessDaysUntil(this DateTime firstDay, DateTime lastDay, params DateTime[] bankHolidays) { firstDay = firstDay.Date; lastDay = lastDay.Date; if (firstDay > lastDay) throw new ArgumentException("Incorrect last day " + lastDay); TimeSpan span = lastDay - firstDay; int businessDays = span.Days + 1; int fullWeekCount = businessDays / 7; // 计算周末天数 int weekendDays = fullWeekCount * 2; int remainingDays = businessDays % 7; int firstDayOfWeek = (int)firstDay.DayOfWeek; int lastDayOfWeek = (int)lastDay.DayOfWeek; if (remainingDays > 0) { if (lastDayOfWeek == 0) lastDayOfWeek = 7; // 将周日转换为7 if (firstDayOfWeek == 0) firstDayOfWeek = 7; // 将周日转换为7 if (lastDayOfWeek < 6) weekendDays += 0; // 如果最后一天不是周末,则不加周末天数 else if (lastDayOfWeek == 6) weekendDays += 1; // 如果最后一天是周六,则加一天 else weekendDays += 2; // 如果最后一天是周日,则加两天 if (firstDayOfWeek == 7) weekendDays -= 1; // 如果第一天是周日,则减一天 else if (firstDayOfWeek == 6) weekendDays -= 1; // 如果第一天是周六,则减一天 } businessDays -= weekendDays; foreach (DateTime bankHoliday in bankHolidays) { DateTime bh = bankHoliday.Date; if (bh >= firstDay && bh <= lastDay) businessDays--; } return businessDays; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengira Bilangan Hari Perniagaan Antara Dua Tarikh dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!