坚持ISO8601的最佳策略

时间:2016-04-24 23:17:02

标签: java rest datetime jodatime

我一直在阅读有关上述问题的不同文章,但我无法弄清楚在db中存储日期的最佳策略。

我将在休息电话中通过path-param收到ISO8601日期。我决定了什么

  1. 使用Joda-Time来解析日期。
  2. 从日期和小时偏移中提取UTC-0时间
  3. UTC-0数据类型存储在DateTime数据库中mysql并将offset存储在varchar(5)中。
  4. 当我必须根据日期(暴露的休息api)搜索某些内容时。我将使用搜索条件(输入日期)提取UTC-0时间和hours offset并比较数据库中的两列,即where table.dateInUTC0 = :inputDateInUTC0 AND table.hoursOffset = :inputHoursOffset
  5. 我不确定第4步。我做对了吗?

1 个答案:

答案 0 :(得分:0)

  

我不确定第4步。我做对了吗?

真的,这取决于你尝试做什么。

  • 如果您希望搜索仅在搜索者使用与原始数据相同的时区时匹配,那么您的操作正确。

  • 如果你不想那样,那你做错了。

问问自己:如果您在本地时区和UTC(或其他某个时区)输入相同的日期/时间,那么他们对您服务器的客户来说意味着同样的事情吗?他们应该吗?