在没有任何时区转换的情况下将TimeStamp转换为Joda DateTime

问题描述 投票:1回答:2

我在以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

谢谢。

spring datetime jodatime spring-jdbc
2个回答
0
投票

一个有效的解决方案是更改从数据库中检索时间戳列值的方式。下面的代码段用于将时间戳列值转换为joda DateTime而不会丢失/转换时区

new DateTime(resultSet.getTimestamp("CreatedDateTime",
                        Calendar.getInstance(TimeZone.getTimeZone("UTC"))), DateTimeZone.UTC)

希望能帮助别人。


-1
投票

如果您已有DateTime对象,则有方法

public DateTime withZone(DateTimeZone newZone) 

这将返回具有不同时区的日期时间的副本,保留毫秒时刻

例如: - dateTime.withZone(DateTimeZone.UTC)

© www.soinside.com 2019 - 2024. All rights reserved.