【发布时间】:2016-08-18 00:29:55
【问题描述】:
我正在调用我的rest api,并使用以下网址localhost:8080/api/2016-05-30T10:30:00-05:00/3
api 接收date 为String,然后将其转换为 jodatime 日期时间对象,如dateTime = DateTime.parse(date); ... 调试此代码表明它产生了预期值。
但是,当我将此日期转换为 java.sql.timestamp 时,例如 Timestamp ts = new Timestamp(dateTime.getMillis()); ... 结果时间是 2016-05-30 11:30:00.0 ... 为什么将 +1 hour 添加到时间以及转换的正确方法是什么?
一些背景
我已将时间作为时间戳保存在 sql 表中。时区(例如作为字符串 +4:00 或 -5:00)在单独的列中。
我会在我的 url 路径参数中收到一个 ISO8601 时间,并且基于此我必须从 db 中获取记录。为此,我将使用两个比较。 1 匹配时间,2 匹配时区。
【问题讨论】:
-
您可能希望包含有关时区的信息。它通常会产生……有趣的副作用。
-
我应该添加什么信息?我没有做任何明确的说...我的系统设置为 EDT 时区虽然
-
我对 jodatime 不熟悉,但
java.sql.Timestamp(long)期望参数位于 GMT 时区,我没有看到BaseDateTime.getMillis()javadoc 中指定的任何时区,尽管它似乎使用 ISO8601,其中 Z 表示 UTC,相当于 GMT... -
你也试过
java.util.Date(long)吗? -
您目前处于夏令时,这会使您的时钟提前一小时......这不是巧合。
标签: java datetime timestamp jodatime date-conversion