在NodaTime中使用不在午夜开始的日子

我正在开发一个有火车时刻表的应用程序,第一列火车在0400离开,而末class火车在0200离开。因此,该应用程序的用户处理从0300开始到0300结束的日子。换句话说,当他们说“星期三的火车在0200“他们真的意味着”火车于周四0200离开“。

我们的应用程序需要存储所有在周三(例如)周三离开的列车,这意味着它不应该包括0300之前离开的列车,但它应该包括第二天离开的列车直到0300。

如何在不疯狂的情况下在应用程序中表示这一点? 如何将其存储在数据库中以便于查询?

我会存储实际的日期/时间值。 然后,为了查询,搜索“周三的任何东西”,你将从0400(星期三)(包括)周四到0400(星期四)(独家)。

在显示方面,您可能最好采用日期,如果时间早于某些截止值,则减去一天:

private static readonly LocalTime CutOff = new LocalTime(4, 0, 0); ... LocalDate date = dateTime.Date; if (dateTime.TimeOfDay < CutOff) { date = date.PlusDays(-1); } var dayOfWeek = date.IsoDayOfWeek; 

我会尽量避免自己使用日期,以免发疯。 任何日期/时间都是明确的。