在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年的日期循环。
自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();
}
输出:
正确
正确
正确
正确
正确
正确
正确
真实