2011-04-05 95 views
4

爲了學習最佳實踐,我有一個問題。在尋找一週的開始日期的過程中,我遇到了這個線程。 「http://stackoverflow.com/questions/38039/how-can-i-get-the-datetime-for-the-start-of-the-week」有沒有更好的方法來解構日期?

問題:我需要一個格式4-3-2011:有沒有更有效的方法來完成這一點,而不是我的代碼黑客?

DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday); 
      int ddt = dt.Day; 
      int mdt = dt.Month; 
      int ydt = dt.Year; 
      string sddt = ddt.ToString(); 
      string smdt = mdt.ToString(); 
      string sydt = ydt.ToString(); 
      string fdate = (smdt + "-" + sddt + "-" + sydt); 

線程代碼:作者諷刺

public static class DateTimeExtensions 
    { 
     public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek) 
     { 
      int diff = dt.DayOfWeek - startOfWeek; 
      if (diff < 0) 
      { 
       diff += 7; 
      } 

      return dt.AddDays(-1 * diff).Date; 
     } 
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday); 

回答

2

更好?不確定。

第二個代碼對我來說是更好的,那麼可以肯定你可以只使用

dt.ToString("d-m-yyyy"); 
1

稍好的擴展方法,以當前的文化考慮(from the same thread above)

public static class DateTimeExtensions { 
    public static DateTime StartOfWeek(this DateTime date) { 
     System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture; 
     DayOfWeek dayOfWeek = culture.DateTimeFormat.FirstDayOfWeek; 
     return date.AddDays(dayOfWeek - date.DayOfWeek); 
    } 
} 

,然後用所謂的:

DateTime.Now.StartOfWeek().ToString("M-d-yyyy"); 
相關問題