3

我正在开发一个带有火车时刻表的应用程序,其中首班火车在 0400 出发,而最后一班火车在 0200 出发。因此,该应用程序的用户处理从 0300 开始到 0300 结束的日子。换句话说,当他们说“周三 0200 的火车”他们真正的意思是“周四 0200 出发的火车”。

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

我将如何在应用程序中表示这一点而不会发疯?以及如何将其存储在数据库中以便于查询?

4

1 回答 1

2

我会存储实际的日期/时间值。然后进行查询,要搜索“周三的任何事情”,您需要从周三 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;

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

于 2013-11-18T16:54:14.150 回答