我正在尝试提取当前星期的日期,但我就是找不到一种合理、智能的方法来代替冗长的case、switches和if语句。有谁知道用.Net解压它们的相对简单的方法吗?谢谢!
发布于 2015-06-07 17:52:27
DateTime.DayOfWeek是一个以Sunday开始的枚举,从0开始往前走。如果你取今天的星期几,它也会告诉你多少天前的星期天。因此,假设一周从周日开始,那么返回那么多天将得到本周的周日。你可以在一周的七天中从这一点开始。
var today = DateTime.Now;
var thisSunday = today.AddDays(-(int)today.DayOfWeek);
for (int i=0; i<7; i++)
Console.WriteLine(thisSunday.AddDays(i).ToString());如果一周从星期一开始,请使用
var thisMonday = today.AddDays(-(((int)today.DayOfWeek + 6) % 7));发布于 2015-06-07 18:13:37
您可以使用扩展方法设置周的开始日期(credit goes to @Compile This)
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime datetime, DayOfWeek startOfWeek)
{
int difference = datetime.DayOfWeek - startOfWeek;
if (difference >= 0)
return datetime.AddDays(-1 * difference).Date;
difference += 7;
return datetime.AddDays(-1 * difference).Date;
}
}然后,您可以使用与@Sami_Kuhmonen提到的相同的循环来获取星期几:
DateTime d = DateTime.Now.StartOfWeek(DayOfWeek.Saturday);
for (int i = 0; i < 7; i++)
Console.WriteLine(d.AddDays(i));https://stackoverflow.com/questions/30692102
复制相似问题