【问题标题】:Whats the Most efficient way to Check if a Date is between Recurrence of a Span?检查日期是否在跨度重复之间的最有效方法是什么?
【发布时间】:2009-01-19 17:00:06
【问题描述】:

使用 c# 日期类检查日期是否介于重复的时间跨度之间的最有效方法是什么。

例如,您的跨度为 01/01/2009 1:00:00 am 到 01/06/2009 5:00pm,每 x 年、月或周数重复一次,等等.

我想检查变量日期 x 是否介于任何重复之间

我阅读了Martin Fowler's paper on temporal expressions,但他的所有示例都是单日事件,而不是可以跨越多天的事件。

【问题讨论】:

  • 重复周期是否总是在数字上相同(例如 7 天、30 天、365 天)还是必须遵循日期驱动的规则,例如每个月,每年?如果是后者,如果期间是 1 月 29 日到 1 月 31 日,那么 2 月会发生什么?
  • Adam 我通过让用户选择在月份中选择星期几(星期一、星期二等)或一个月中的某一天(这不会在某些情况下会发生)
  • 对不起,我不明白你的意思。

标签: c# algorithm date


【解决方案1】:

以下条件必须为真:

(time - begin) mod period < (end - begin),

前提是period > (begin - end)

所有变量都应以相同的单位表示(例如,秒或您需要的任何精度)

【讨论】:

  • 不幸的是,大多数涉及日期时间的时期都不是恒定的(月份为 28-31 天,年份为 365/366 天,等等......)
  • 这是一个非常简洁的方法,它适用于间隔之间的数值恒定距离(例如 7 天、30 天、365 天),但如果要遵循日期驱动的规则,例如“每个月” ', 'every year' 然后需要其他内容(请参阅我对问题的评论)。
猜你喜欢
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多