Không có cách nào được tích hợp trực tiếp để thực hiện việc này nhưng có thể thực hiện khá dễ dàng. Dưới đây là một phương pháp khuyến nông có thể được sử dụng để dễ dàng có được số tuần trong năm dựa trên một ngày:
public static int GetWeekNumber(this DateTime date)
{
return GetWeekNumber(date, CultureInfo.CurrentCulture);
}
public static int GetWeekNumber(this DateTime date, CultureInfo culture)
{
return culture.Calendar.GetWeekOfYear(date,
culture.DateTimeFormat.CalendarWeekRule,
culture.DateTimeFormat.FirstDayOfWeek);
}
Sau đó chúng tôi có thể sử dụng để tính toán số tuần tháng dựa trên, loại giống như Jason shows. Một phiên bản thân thiện với văn hóa có thể trông giống như sau:
public static int GetWeekNumberOfMonth(this DateTime date)
{
return GetWeekNumberOfMonth(date, CultureInfo.CurrentCulture);
}
public static int GetWeekNumberOfMonth(this DateTime date, CultureInfo culture)
{
return date.GetWeekNumber(culture)
- new DateTime(date.Year, date.Month, 1).GetWeekNumber(culture)
+ 1; // Or skip +1 if you want the first week to be 0.
}
Điều này không chính xác; nó trả về '-48' cho' dt = new DateTime (2010, 1, 25) '. – jason
@ Jason Good catch. Vấn đề là vào ngày đầu tiên của tháng Giêng thuộc vào tuần cuối cùng của tháng Mười Hai. Cố định mã để bỏ qua điều đó. – GaussZ