Giới thiệu
Phương thức tĩnh DateTime.DaysInMonth(int year, int month) trả về số ngày của một tháng cụ thể trong năm cụ thể (xử lý năm nhuận tự động).
Ví dụ cơ bản
int days = DateTime.DaysInMonth(2018, 8); // 31
Ví dụ hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
Console.WriteLine("Today = {0}", DateTime.Today);
int numDays = DateTime.DaysInMonth(2018, 8);
Console.WriteLine("Days in August: " + numDays);
}
}
Kết quả
Today = 9/4/2018 12:00:00 AM Days in August: 31
Bảng số ngày theo tháng
| Tháng | Ngày (thường) | Ngày (nhuận) |
|---|---|---|
| 1, 3, 5, 7, 8, 10, 12 | 31 | 31 |
| 4, 6, 9, 11 | 30 | 30 |
| 2 | 28 | 29 |
Quy tắc năm nhuận
- Chia hết cho 4 -> năm nhuận.
- Trừ năm chia hết cho 100 -> không nhuận.
- Trừ năm chia hết cho 400 -> nhuận.
- Ví dụ: 2000 nhuận, 1900 không nhuận, 2024 nhuận.
Ví dụ ứng dụng: Validate ngày tháng
public bool IsValidDate(int year, int month, int day)
{
if (month < 1 || month > 12) return false;
int daysInMonth = DateTime.DaysInMonth(year, month);
return day >= 1 && day <= daysInMonth;
}
Lưu ý
- Ném
ArgumentOutOfRangeExceptionnếu month < 1 hoặc > 12, hoặc year < 1 hoặc > 9999. - Hiệu suất cao, không cần tạo DateTime instance.
- Có thể dùng
CultureInfo.CurrentCulture.Calendar.GetDaysInMonth(year, month)cho lịch không phải Gregorian.