Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lấy số ngày trong tháng với C#


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ángNgày (thường)Ngày (nhuận)
1, 3, 5, 7, 8, 10, 123131
4, 6, 9, 113030
22829

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 ArgumentOutOfRangeException nế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.