强制在日期时间设置一周中的特定日期

本文关键字:日期 一周 设置 时间 | 更新日期: 2023-09-27 17:57:07

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

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

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

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

这段代码有效,因为我希望 Web 应用程序选择用户选择的支付期结束时间,无论他们选择一周中的哪一天。

我的问题是,有没有更易读的方法?

强制在日期时间设置一周中的特定日期

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

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();