gpt4 book ai didi

c# - 根据规则集验证日期

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:30 24 4
gpt4 key购买 nike

我正在编写一个应用程序,它需要根据一组规则来限制下订单的时间。我有两个问题,将规则存储在 MSSQL 表中的最佳方式是什么,以及根据规则验证日期的最佳方式是什么?

例如。

  • 不能在 1200 到 1700 之间的任何周六下单。
  • 不能在 0000 到 2359 之间的任何圣诞节 (25/12) 下订单
  • 10/3/2013 不能下 1500 到 1600 之间的订单。

我最初的计划是让一个表有 4 列(开始时间、结束时间、单一规则/重复规则)。

但是,我不确定如何考虑星期几与年份中的日期与绝对日期。

有什么想法吗?

最佳答案

我解决这个问题的方法是使用 3 个表(年中的第几天、星期几和绝对日期)来覆盖包含每个规则的开始/结束时间的 DateConstraint。

entity framework diagram for time matching

验证码相对简单。我将 Matches() 例程添加到所有类。

public partial class DateConstraint
{
public virtual bool Matches()
{
return DateTime.Now.TimeOfDay.Ticks >= StartTime.Ticks && DateTime.Now.TimeOfDay.Ticks <= EndTime.Ticks;
}
}

public partial class DayOfWeekConstraint : DateConstraint
{
public override bool Matches()
{
return base.Matches() && this.DayOfWeek == Convert.ToInt16(DateTime.Now.DayOfWeek);
}
}

public partial class DayOfYearConstraint : DateConstraint
{
public override bool Matches()
{
return base.Matches() && Date.Day == DateTime.Now.Day && Date.Month == DateTime.Now.Month;
}
}

public partial class AbsoluteDateConstraint : DateConstraint
{
public override bool Matches()
{

return base.Matches() && Date.Day == DateTime.Now.Day && Date.Month == DateTime.Now.Month && Date.Year == DateTime.Now.Year;
}
}

要进行验证,我只是这样做

foreach(var dateConstraint in Restaurant.DateConstraints)
{
if(!dateConstraint.Matches()) { return false; }
}

关于c# - 根据规则集验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com