【发布时间】:2015-11-06 16:26:51
【问题描述】:
我编写了以下方法,以便通过传递年份和年份的周数返回第一个日期,我认为星期一是一周的第一天。我想知道是否有更好的方法可以计算这个。这是我的代码;
public static DateTime GetFirstDateOfWeekByWeekNumber(int year, int weekNumber)
{
var date = new DateTime(year, 01, 01);
var firstDayOfYear = date.DayOfWeek;
var result = date.AddDays(weekNumber * 7);
if (firstDayOfYear == DayOfWeek.Monday)
return result.Date;
if (firstDayOfYear == DayOfWeek.Tuesday)
return result.AddDays(-1).Date;
if (firstDayOfYear == DayOfWeek.Wednesday)
return result.AddDays(-2).Date;
if (firstDayOfYear == DayOfWeek.Thursday)
return result.AddDays(-3).Date;
if (firstDayOfYear == DayOfWeek.Friday)
return result.AddDays(-4).Date;
if (firstDayOfYear == DayOfWeek.Saturday)
return result.AddDays(-5).Date;
return result.AddDays(-6).Date;
}
【问题讨论】:
-
获取本周的第一个星期一?
-
看起来@GSerg 发布了您要查找的内容。如果你不这样做,你至少应该把它变成一个
switch,而不是所有的ifs。 -
@MaxPoshusta switch 如何比 if 更好?我记得,人们建议避免使用 switch case。你能告诉我任何论证 switch 比 if 更好吗,谢谢?
-
我不知道你为什么要避开
switch/case。做任何使你的代码最易读的事情。在您的情况下,它将使用switch/case。 -
也许您正在考虑使用
switch/case进行多态性。那是糟糕的设计。见programmers.stackexchange.com/a/147227/20458
标签: c#