Java 存储日期和可选时间的Android Room
我正在构建一个简单的todo应用程序,它允许用户在todo上附加一个截止日期。我希望用户能够只选择一个日期(使之成为“全天任务”的一种),或者选择一个日期和一个应该完成todo的时间 一些研究告诉我,由于时区问题,在数据库中为Java 存储日期和可选时间的Android Room,java,android,datetime,Java,Android,Datetime,我正在构建一个简单的todo应用程序,它允许用户在todo上附加一个截止日期。我希望用户能够只选择一个日期(使之成为“全天任务”的一种),或者选择一个日期和一个应该完成todo的时间 一些研究告诉我,由于时区问题,在数据库中为LocalDate使用一列,为LocalTime使用一列是不明智的 现在我想到了以下几点: 1列将包含一个LocalDate(当然是一个字符串),另一列包含一个Instant(长) 如果用户仅定义日期,则它将存储在LocalDate列中,Instant列将为空 如果用户同
LocalDate
使用一列,为LocalTime
使用一列是不明智的
现在我想到了以下几点:
- 1列将包含一个
(当然是一个字符串),另一列包含一个LocalDate
(长)Instant
- 如果用户仅定义日期,则它将存储在
列中,LocalDate
列将为空Instant
- 如果用户同时定义了日期和时间,则该日期和时间将存储为
,而Instant
列将为空LocalDate
然而,这真的感觉像是一个草率的解决方案。还有其他选择吗?我应该使用两个不同的todo表吗?一个用于全天任务,另一个用于日期和时间任务?
只选择一个日期(将其设置为“全天任务”类型),或者同时选择一个日期和一个时间
将日期和时间保存到日期对象中,并为isAllDayTask
设置布尔标志。如果是真的,只使用日期,否则使用日期+时间我已经考虑过了,但是如果这是一项全天任务,为了方便起见,时间设置为00:00,而有人改变了时区怎么办。突然之间,时间向前或向后移动了一个小时,这导致日期也发生了变化,而这本不应该发生。