2010-06-09 175 views
0

我需要第一个星期一的未来一周吗?C#日期时间问题

如何制作C#?

现在约会09.jan.2009

我需要15.jun.2009周一

+2

,我想第一个星期日。 [@oraclee,请添加一些细节] – 2010-06-09 09:34:43

+0

好吧ı加入详细信息 – Chicharito 2010-06-09 09:37:31

回答

3

这应该工作太

DateTime monday = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek + 1).AddDays(7).Date 
4

如果你想获得第一个星期一之后的某个日期,这样做:

DateTime GetFirstMondaySince(DateTime afterWhen) 
{ 
    int dayOfWeek = (int)someDate.DayOfWeek; 
    int wantedDay = (int)DayOfWeek.Monday; 
    return afterWhen.AddDays((wantedDay-dayOfWeek+7)%7); 
} 

对于在今年的第一个星期一,使用GetFirstMonday(DATETIME(2009,1,1))

等。

注意:未经测试的代码。使用前请认真理解和测试。

第一个星期一下周:GetFirstMondaySince(DateTime.Now + TimeSpan.FromDays(2));

+0

工作谢谢.. – Chicharito 2010-06-09 09:43:02

1
public DateTime GetNextMonday() 
    { 

      DateTime dt = DateTime.Today; 

      if dt.DayOfWeek == DayOfWeek.Monday 
      { 
       dt.AddDays(7); 
      } 
      else 
      { 
       while (dt.DayOfWeek != DayOfWeek.Monday) 
       { 
       dt = dt.AddDays(1); 
       } 
      } 
      return dt; 
    } 
+2

循环不应该代替算术。 – 2010-06-09 09:41:45

+0

如果'dt'是星期一怎么办?它永远不会循环并基本返回'DateTime.Today'。 – 2010-06-09 09:43:15