Thứ Bảy, 9 tháng 8, 2014

C# – Lấy ngày đầu tiên trong tuần

Bạn có thể sử dụng đoạn code sau để lấy về ngày đầu tiên trong tuần chứa 1 ngày được nhập vào.
Lưu ý là class CultureInfo nằm trong namespace System.Globalization, nên bạn cần using nó để sử dụng.
 /// <summary>
 /// Lấy ra ngày đầu tiên trong tuần của ngày nhập vào 
 /// với Culture mặc định là Culture hiện tại
 /// </summary>
 /// <param name="dayInWeek">Ngày nhập vào</param>
 /// <returns>Ngày đầu tiên trong tuần</returns>
 public static DateTime GetFirstDayOfWeek(DateTime dayInWeek)
 {
     CultureInfo defaultCultureInfo = CultureInfo.CurrentCulture;
     return GetFirstDayOfWeek(dayInWeek, defaultCultureInfo);
 }
 /// <summary>
 /// Lấy ra ngày đầu tiên trong tuần của ngày nhập vào
 /// với một Culture cụ thể được truyền vào
 /// </summary>
 /// <param name="dayInWeek">Ngày nhập vào</param>
 /// <param name="cultureInfo">CultureInfo quy định các thông tin về Culture 
 /// ( định dạng ngày tháng, ngày bắt đầu trong tuần , ... )
 /// </param>
 /// <returns></returns>
 private static DateTime GetFirstDayOfWeek(DateTime dayInWeek, CultureInfo cultureInfo)
 {
     DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek;
     DateTime firstDayInWeek = dayInWeek.Date;
     while (firstDayInWeek.DayOfWeek != firstDay)
     {
        firstDayInWeek = firstDayInWeek.AddDays(-1);
     }
     return firstDayInWeek;
 }
 /// <summary>
 /// Lấy ra ngày đầu tiên trong tuần của ngày nhập vào
 /// với 1 giá trị cụ thể của enum DayOfWeek chỉ định 
 /// ngày bắt đầu tuần là thứ mấy
 /// </summary>
 /// <param name="dayInWeek">Ngày nhập vào</param>
 /// <param name="dayOfWeek">enum chỉ định thứ bắt đầu tuần</param>
 /// <returns></returns>
 private static DateTime GetFirstDayOfWeek(DateTime dayInWeek, DayOfWeek dayOfWeek)
 {
     DateTime firstDayInWeek = dayInWeek.Date;
     while (firstDayInWeek.DayOfWeek != dayOfWeek)
     {
         firstDayInWeek = firstDayInWeek.AddDays(-1);
     }
     return firstDayInWeek;
 }

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

Đăng nhận xét