C#将周作为日期时间返回

C#将周作为日期时间返回,c#,datetime,C#,Datetime,我正在为一个采用字符串助记符并返回DateTime作为结果的方法创建一个切换案例。 例如,这是其中的一部分: switch (mnemonic) { case CURRENT_TIME: return DateTime.Now; case TODAY: return DateTime.Now.Date; } 我遇到的问题是: case THIS_WEEK: 如何将星期作为DateTime对象返回?一周由两点定义,一个开始日期和一个结束日期。如果

我正在为一个采用字符串助记符并返回DateTime作为结果的方法创建一个切换案例。 例如,这是其中的一部分:

switch (mnemonic)
{
    case CURRENT_TIME:
        return DateTime.Now;
    case TODAY:
        return DateTime.Now.Date;
}
我遇到的问题是:

case THIS_WEEK:

如何将星期作为DateTime对象返回?

一周由两点定义,一个开始日期和一个结束日期。如果只想返回一个datetime对象,则返回开始日期,您知道一周包括从开始日期算起的7天。

您是否尝试过:

Calendar.GetWeekOfYear()
见此:


此代码将为您提供当前日期的周。如果要显示一周的第一天,则可以根据此信息计算DateTime对象。但是,我会制作一个DateTime包装类,其中还包括week#如果这是您特别寻找的项目,并返回它

你可以通过简单的数学计算得到一周的第一天

DateTime date = DateTime.Today;
DayOfWeek firstDay = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;

var firstDayOfTheWeek = date.AddDays(firstDay - date.DayOfWeek);
Console.WriteLine(firstDayOfTheWeek);

int weekNumber = firstDayOfTheWeek.DayOfYear / 7; // In case you want this information as well.
Console.WriteLine(weekNumber);

今天的是NeTela周是一个时间跨度,所以它不适用,但是你可以测试一周的开始日期,但是这取决于你认为是一周的开始的哪一天,这是可以争论的,并且在地域上是不同的。不是所有的文化在同一天结束一周。也许更好的参数一周的开始日期,而不是硬编码的星期天,因为它不是全球一致的。许多人把星期一当作一周的开始。正确地说,我要说:-p@stuartd,我相信OP可以自己做文化,这只是对代码的一个小补充。@OrelEraki“这只是对代码的一个小补充”意味着“这实际上并没有回答问题”。您在回答中也没有提到文化差异。@stuartd,您关于文化差异的看法是正确的,并且得到了相应的纠正。因此,在本例中,“技术正确”意味着“从需求返回完全不同的数据类型”?更新了我的建议,因为您是对的,我没有回答这个问题。一、 相反,我提供了另一种解决方案。