我正在使用 SQLite 包装器GRDB并尝试在特定日期之间请求日历事件。我的表格的缩写版本Event
如下。
ID | 标题 | 开始时间 | 时间结束 | isAllDay |
---|---|---|---|---|
1 | 会议 1 | 2021-10-16 14:15:00.000 | 2021-10-16 17:15:00.000 | 0 |
2 | 会议 2 | 2021-10-16 16:15:00.000 | 2021-10-16 17:15:00.000 | 0 |
3 | 假期 | 2021-10-16 00:00:00.000 | 2021-10-17 00:00:00.000 | 1 |
目前我有一个看起来像这样的请求
public extension DerivableRequest where RowDecoder == DB.Event {
func activeEventsBetween(start: Date, end: Date) -> Self {
filter((start ... end).contains(DB.Event.Columns.startTime))
.order(DB.Event.Columns.startTime)
}
}
除全天活动外,此请求工作正常。数据库以 UTC 格式存储日期,全天事件的时间为 0:00。为了说明这个问题,我的时区是 UTC-3。考虑到上述数据,如果我请求 10 月 16 日的开始和结束之间的事件,则响应会省略全天事件(UTC stanrttime 为 0:00),因为我的开始时间转换为 UTC是 3:00。
我考虑更新全天的开始和结束时间以反映当前时区,但我很快就打消了这个想法,因为如果用户更改时区,我也会遇到同样的问题。我还考虑过使用isAllDay
布尔值以不同的方式处理这些事件,但我无法设计解决方案。关于如何实现请求的任何建议?