在日期时间强制每周的特定日期

时间:2014-04-07 03:51:51

标签: c# datetime

我正在编写一个asp.net网络应用程序,我希望用户能够选择支付期的结束。

支付期限总是在星期六结束。

我正在使用日历控件,并为它提供了一个onSelectionChanged事件处理程序,如下所示:

    protected void forceSaturdaySelection (object sender, EventArgs e)
    {
        Weekending.SelectedDate = Weekending.SelectedDate.AddDays(DayOfWeek.Saturday - Weekending.SelectedDate.DayOfWeek);
    }

此代码有效,因为我希望网络应用程序选择用户选择的付款期限结束,无论他们选择哪一天。

我的问题是,有更可读的方法吗?

1 个答案:

答案 0 :(得分:1)

没有...但是这不会阻止你自己做这件事!创建一个扩展方法..或者只是另一种方法来调用:

private DateTime getPayPeriodEnding(DateTime selectedDate) {
    return selectedDate.AddDays(DayOfWeek.Saturday - selectedDate.DayOfWeek);
}

扩展方法版本:

public static DateTime NextPayPeriodEndDate(this DateTime selectedDate) {
    return selectedDate.AddDays(DayOfWeek.Saturday - selectedDate.DayOfWeek);
}

然后您的代码变为:

WeekEnding.SelectedDate = getPayPeriodEnding(WeekEnding.SelectedDate);

或..

WeekEnding.SelectedDate = WeekEnding.SelectedDate.NextPayPeriodEndDate();