Java 存储日期和可选时间的Android Room

Java 存储日期和可选时间的Android Room,java,android,datetime,Java,Android,Datetime,我正在构建一个简单的todo应用程序,它允许用户在todo上附加一个截止日期。我希望用户能够只选择一个日期(使之成为“全天任务”的一种),或者选择一个日期和一个应该完成todo的时间 一些研究告诉我,由于时区问题,在数据库中为LocalDate使用一列,为LocalTime使用一列是不明智的 现在我想到了以下几点: 1列将包含一个LocalDate(当然是一个字符串),另一列包含一个Instant(长) 如果用户仅定义日期,则它将存储在LocalDate列中,Instant列将为空 如果用户同

我正在构建一个简单的todo应用程序,它允许用户在todo上附加一个截止日期。我希望用户能够只选择一个日期(使之成为“全天任务”的一种),或者选择一个日期和一个应该完成todo的时间

一些研究告诉我,由于时区问题,在数据库中为
LocalDate
使用一列,为
LocalTime
使用一列是不明智的

现在我想到了以下几点:

  • 1列将包含一个
    LocalDate
    (当然是一个字符串),另一列包含一个
    Instant
    (长)
  • 如果用户仅定义日期,则它将存储在
    LocalDate
    列中,
    Instant
    列将为空
  • 如果用户同时定义了日期和时间,则该日期和时间将存储为
    Instant
    ,而
    LocalDate
    列将为空

然而,这真的感觉像是一个草率的解决方案。还有其他选择吗?我应该使用两个不同的todo表吗?一个用于全天任务,另一个用于日期和时间任务?

只选择一个日期(将其设置为“全天任务”类型),或者同时选择一个日期和一个时间
将日期和时间保存到日期对象中,并为
isAllDayTask
设置布尔标志。如果是真的,只使用日期,否则使用日期+时间我已经考虑过了,但是如果这是一项全天任务,为了方便起见,时间设置为00:00,而有人改变了时区怎么办。突然之间,时间向前或向后移动了一个小时,这导致日期也发生了变化,而这本不应该发生。