获取本周第一个星期一的date?
我想知道如果你们知道如何根据今天的date得到当周星期一的date?
即2009-11-03过去了,2009-11-02又回来了
/ M
这是我使用(可能不国际化):
DateTime input = //... int delta = DayOfWeek.Monday - input.DayOfWeek; DateTime monday = input.AddDays(delta);
Pondium答案在某些情况下可以search前进。 如果你只想向后search,我认为它应该是:
DateTime input = //... int delta = DayOfWeek.Monday - input.DayOfWeek; if(delta > 0) delta -= 7; DateTime monday = input.AddDays(delta);
像这样的东西会工作
DateTime dt = DateTime.Now; while(dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1);
我敢肯定,有一个更好的方式tho 🙂
public static class DateTimeExtension { public static DateTime GetFirstDayOfWeek(this DateTime date) { var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek; while (date.DayOfWeek != firstDayOfWeek) { date = date.AddDays(-1); } return date; } }
国际在这里。 我认为作为扩展它可以更有用。
关于什么:
CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
为什么不使用本机解决scheme?
var now = System.DateTime.Now; var result = now.AddDays(-((now.DayOfWeek - System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek + 7) % 7)).Date;
星期一大概会回来。 除非你使用星期一不是一周的第一天的文化。
尝试这个:
public DateTime FirstDayOfWeek(DateTime date) { var candidateDate=date; while(candidateDate.DayOfWeek!=DayOfWeek.Monday) { candidateDate=candidateDate.AddDays(-1); } return candidateDate; }
编辑完整性:今天的date过载:
public DateTime FirstDayOfCurrentWeek() { return FirstDayOfWeek(DateTime.Today); }