如何使用DayOfWeek获取以前的日期

本文关键字:日期 获取 何使用 DayOfWeek | 更新日期: 2023-09-27 18:12:21

我有一个提醒表在我的数据库中,有2列存储的ActionDay和ReminderDay。这些天数都以整数形式存储:0 (sun) -> 6 (sat)表示一周中的天数。

当我加载我的页面时,我想显示下一个ActionDay日期和提醒日日期。

我可以计算出下一个ActionDay日期使用这个:

public static class DateTimeExtensions
{
    public static DateTime Next(this DateTime date, DayOfWeek weekday)
    {
        return (from i in Enumerable.Range(0, 7)
                where date.AddDays(i).DayOfWeek == weekday
                select date.AddDays(i)).First();
    }
}

我在计算ActionDay的前一个日期时遇到了一些麻烦。

例如,(使用今天的日期为2011年10月26日):如果ActionDay是'3',而ReminderDay是'2',那么我期望"10月26日星期三"为行动日,"10月25日星期二"为提醒日。

如果ActionDay是0,而ReminderDay是6,我希望"10月30日星期日"及"10月29日星期六"

我怎样才能得到这个提醒日期有什么建议吗?我也有兴趣知道是否有任何好的c#日期时间扩展/片段,因为它可能更容易插入别人已经测试过的东西,而不是在这里写我自己的:)

谢谢,丰富的

如何使用DayOfWeek获取以前的日期

您可以计算ActionDay和ReminderDay之间的差异,然后调用代表动作日的DateTime上的AddDay()函数来获得提醒日的DateTime:

// here a stands for the number representing the action day, and r for the reminder day
// a and r are both integers from 0 to 6
int diff;
if (a >= r)
{
    diff = a - r;
}
else
{
    diff = a + 7 - r;
}
DateTime reminderDateTime = actionDateTime.AddDays(-1 * diff);