【问题标题】:Given a week number in C#, how can I gain start and end dates of that week?给定 C# 中的周数,我如何获得该周的开始和结束日期?
【发布时间】:2018-05-08 16:04:09
【问题描述】:

我想编写一个函数来获取一年中的周数,并返回该周的开始日期。还有另一个函数获取周数,并返回该周的结束日期。

伪代码:

public DateTime GetSaturdayDateOfWeek(int weekNumberInYear)
{
    // calculations, that finds the Saturday of that week, 00:00:00 of midnight
    return DateTime.Now;
}

public DateTime GetFriddayDateOfWeek(int weekNumberInYear)
{
    // calculations, that finds the Friday of that week, 23:59:59
    return DateTime.Now;
}

如何计算这些日期?

This question is in PHP 并没有帮助我。还有this question gets the week number of the month。我有一年中的周数。

【问题讨论】:

  • 周的开始和结束是特定于文化的。此外,周数有些模糊 - 如果一周从星期一开始,而 1 月 1 日是星期四,那么 1 月 6 日(一年中的第一个星期二)属于一年中的第一周还是第二周?更不用说每年的开始日期都与前一年不同......
  • @ZoharPeled 回答这些问题的相关人员:stackoverflow.com/questions/5791919/…

标签: c#


【解决方案1】:

它不漂亮,Zohar Peled 的评论非常有效,但这适用于“正常”(因为没有更好的词)日历。 (IE:没有本地化,没什么特别的)这应该提供足够的基础。

public DateTime GetSaturdayDateOfWeek(int weekNumberInYear)
{
    var myDate = new DateTime(DateTime.Now.Year, 1, 1);
    myDate = myDate.AddDays((weekNumberInYear -1)* 7);
    if (myDate.DayOfWeek < DayOfWeek.Saturday)
    {
        myDate = myDate.AddDays(DayOfWeek.Saturday - myDate.DayOfWeek);
    }
    if (myDate.DayOfWeek > DayOfWeek.Saturday)
    {
        myDate = myDate.AddDays(myDate.DayOfWeek - DayOfWeek.Saturday);
    }
    return myDate;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多