2011-04-05 54 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"); 
相关问题