C#:设定开始一周的时间

时间:2014-07-14 12:36:55

标签: c# datetime calendar

我需要查找一年中的周数,并在星期五上午10:00开始新的一周。 如果我只设定开始的日期是星期五,这似乎很容易,这意味着星期五凌晨0:00 但是..我可以在周五上午10点设置它吗? 目前,我使用此代码计算周数

  private int GetWeek(DateTime date)
  {
            DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
            Calendar cal = dfi.Calendar;

            return cal.GetWeekOfYear(date, dfi.CalendarWeekRule, DayOfWeek.Friday);
  }

任何人都可以帮助我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以查看时间来确定您在哪个星期:

private int GetWeek(DateTime date)
{
    DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
    Calendar cal = dfi.Calendar;

    var weeknum= cal.GetWeekOfYear(date, dfi.CalendarWeekRule, DayOfWeek.Friday);
    if (date.TimeOfDay.Hours<10)
    {
        weeknum -= 1;
    }

    return weeknum;
}

但是,在您使用此解决方案之前,您应该考虑一些基于星期五下降时可能出现的情况。例如:

private void Form1_Load(object sender, EventArgs e)
{
    GetWeekHelper(DateTime.Parse("2014-01-03 11:00:00"));  //2
    GetWeekHelper(DateTime.Parse("2015-01-02 11:00:00"));  //2
    GetWeekHelper(DateTime.Parse("2016-01-01 11:00:00"));  //1
    GetWeekHelper(DateTime.Parse("2016-01-01 9:00:00"));   //0
}

private void GetWeekHelper(DateTime date)
{
    Console.WriteLine(String.Format("{0} - {1}", date.ToString(), GetWeek(date)));
}

由于这是您的业务逻辑,您需要确定这些值的正确性。