在不进行任何时区转换的情况下将时间戳转换为 Joda DateTime
Convert TimeStamp To Joda DateTime Without Any Timezone Conversion
我在以 UTC 格式存储的 Oracle 数据库列中有时间戳值。我想通过 spring 的 jdbcTemplate 读取它并将其转换为 joda DateTime 对象而不进行任何时区转换,即按原样读取它而不转换或丢失时区。
例如如果输入时间戳是 2019-03-08 15:07:37.232
,我希望 DateTime 对象的值为 2019-03-08T15:07:37.232Z
我怎样才能做到这一点?
请注意此代码 - new DateTime(timestamp.getTime(), DateTimeZone.UTC))
没有帮助,因为它假定输入时间戳位于本地时区并将其重新转换为 UTC。对于上面的输入是 2019-03-08 15:07:37.232
结果是 2019-03-08T09:37:37.232Z
谢谢。
如果您已经有一个 DateTime 对象,则有方法
public DateTime withZone(DateTimeZone newZone)
这将 return 具有不同时区的 datetime 副本,保留毫秒时刻
例如:- dateTime.withZone(DateTimeZone.UTC)
一个有效的解决方案是更改从数据库中检索时间戳列值的方式。下面的代码片段适用于将时间戳列值转换为没有 losing/converting 时区
的 joda DateTime
new DateTime(resultSet.getTimestamp("CreatedDateTime",
Calendar.getInstance(TimeZone.getTimeZone("UTC"))), DateTimeZone.UTC)
希望对其他人也有帮助。
我在以 UTC 格式存储的 Oracle 数据库列中有时间戳值。我想通过 spring 的 jdbcTemplate 读取它并将其转换为 joda DateTime 对象而不进行任何时区转换,即按原样读取它而不转换或丢失时区。
例如如果输入时间戳是 2019-03-08 15:07:37.232
,我希望 DateTime 对象的值为 2019-03-08T15:07:37.232Z
我怎样才能做到这一点?
请注意此代码 - new DateTime(timestamp.getTime(), DateTimeZone.UTC))
没有帮助,因为它假定输入时间戳位于本地时区并将其重新转换为 UTC。对于上面的输入是 2019-03-08 15:07:37.232
结果是 2019-03-08T09:37:37.232Z
谢谢。
如果您已经有一个 DateTime 对象,则有方法
public DateTime withZone(DateTimeZone newZone)
这将 return 具有不同时区的 datetime 副本,保留毫秒时刻
例如:- dateTime.withZone(DateTimeZone.UTC)
一个有效的解决方案是更改从数据库中检索时间戳列值的方式。下面的代码片段适用于将时间戳列值转换为没有 losing/converting 时区
的 joda DateTimenew DateTime(resultSet.getTimestamp("CreatedDateTime",
Calendar.getInstance(TimeZone.getTimeZone("UTC"))), DateTimeZone.UTC)
希望对其他人也有帮助。