在C#中,如何检查日期是否为1990年以来的每5天

本文关键字:1990年 是否 5天 日期 何检查 检查 | 更新日期: 2023-09-27 18:26:00

我需要检查日期是否在1990年1月1日以来的第5天。

日期包括:

Jan 5, 1990,
Jan 10, 1990,
Jan 15, 1990,
Jan 20, 1990,
Jan 25, 1990,
Jan 30, 1990,
Feb 4, 1990,
Feb 9, 1990,

等等。

算法也必须在未来工作,所以我必须能够检查是否是第5天,即使程序在2年后运行。

有什么办法解决这个问题吗?

现在我正在迭代并将5天添加到1990,但这是很多不必要的循环。如果我的程序在5年后使用,那就是另外5年的日期循环。

在C#中,如何检查日期是否为1990年以来的每5天

自1990年1月1日起每5天:

var is5thday=yourdate.Subtract(new DateTime(1990,1,1)).Days % 5 == 0;

然而,自1989年12月31日以来,您的样本数据每5天显示一次,因此:

var is5thday=yourdate.Subtract(new DateTime(1990,1,1)).Days % 5 == 4;

var is5thday=yourdate.Subtract(new DateTime(1989,12,31)).Days % 5 == 0;

总结1990年以来的总天数。

将该SUM与模5 SUM % 5 = 0一起使用。

1990年1月1日是第0天。1990年1月1日,1990年。

这是正确的,但你的样品日期会错过一天:

DateTime initialDate = new DateTime(1990, 1, 1);
DateTime sampleDate = new DateTime(1990, 1, 6);
bool isDayOf5 = sampleDate.Subtract(initialDate).Days % 5 == 0;
// returns true

试试这个:

public static bool checkDate(DateTime date)
{
    var start = new DateTime(1990, 1, 1);
    return (date - start.Date).Days % 5 == 4;
}

Linqpad测试:

void Main()
{
    checkDate(new DateTime(1990, 1, 5)).Dump();
    checkDate(new DateTime(1990, 1, 10)).Dump();
    checkDate(new DateTime(1990, 1, 15)).Dump();
    checkDate(new DateTime(1990, 1, 20)).Dump();
    checkDate(new DateTime(1990, 1, 25)).Dump();
    checkDate(new DateTime(1990, 1, 30)).Dump();
    checkDate(new DateTime(1990, 2, 4)).Dump();
    checkDate(new DateTime(1990, 2, 9)).Dump();
}

输出:
正确
正确
正确
正确
正确
正确
正确
真实