Thứ Hai, 12 tháng 11, 2012

Tìm thứ 2 và thứ 7 trong tuần của 1 ngày bất kỳ

Mình cần làm một công việc thống kê dữ liệu trong tuần từ thứ 2 đến thứ 7 nên cần tìm ra ngày thứ 2 và thứ 7 trong tuần của 1 ngày bất kỳ.

Ở đây mình không dám đặt tên hàm là First hay End Of Week vì vấn đề ngày Chủ Nhật có nơi coi là ngày đầu tuần, nhưng có nơi coi là ngày cuối tuần.

Trường hợp này mình xét ngày Chủ Nhật là ngày cuối tuần:
  1. public static DateTime MondayOfWeek(this DateTime date)  
  2. {  
  3.     var dayOfWeek = date.DayOfWeek;  
  4.   
  5.     if (dayOfWeek == DayOfWeek.Sunday)  
  6.     {  
  7.         //xét chủ nhật là đầu tuần thì thứ 2 là ngày kế tiếp nên sẽ tăng 1 ngày  
  8.         //return date.AddDays(1);  
  9.   
  10.         // nếu xét chủ nhật là ngày cuối tuần  
  11.         return date.AddDays(-6);  
  12.     }  
  13.   
  14.     // nếu không phải thứ 2 thì lùi ngày lại cho đến thứ 2  
  15.     int offset = dayOfWeek - DayOfWeek.Monday;  
  16.     return date.AddDays(-offset);  
  17. }  
  18.   
  19. public static DateTime SaturdayOfWeek(this DateTime date)  
  20. {  
  21.     return date.MondayOfWeek().AddDays(5);  
  22. }  

Không có nhận xét nào :

Đăng nhận xét