用星期一作为dayofweek = 1计算日期

时间:2009-11-24 07:50:36

标签: c#

我有这段代码:

public static DateTime calcMondayDate(DateTime input)
{
    int delta = DayOfWeek.Monday - input.DayOfWeek;
    DateTime monday = input.AddDays(delta);

    return monday;
}

如果星期日是星期的第一天,它可以很好地计算星期一日期。但我希望它计算所以星期一是一周的第一天。因为如果输入2009-11-29,2009-11-30将返回而不是2009-11-23。

如何调整代码?

/ M

3 个答案:

答案 0 :(得分:2)

试试这个:

public static DateTime calcMondayDate(DateTime input) {
    int delta = (DayOfWeek.Monday - input.DayOfWeek - 7) % 7;
    DateTime monday = input.AddDays(delta);
    return monday;
}

答案 1 :(得分:0)

假设您想要上一个星期一(或星期一的同一天),那么我认为这应该有效:

public static DateTime calcMondayDate(DateTime input)
{
    int delta = (7 - (DayOfWeek.Monday - input.DayOfWeek)) % 7;
    return input.AddDays(-delta);
}

答案 2 :(得分:0)

DateTime temp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 7, 0, 0);
starting=temp.AddDays(-(int) temp.AddDays(-1).DayOfWeek );

这对我有用