从 java.sql.Timestamp 到 joda DateTime 的转换过程中,时区位置不正确

Timezone not setted correctly during convesion from java.sql.Timestamp to joda DateTime

我在尝试将 java.sql.Timestamp 类型的对象转换为时间 org.joda.time.DateTime 的对象时遇到了一些问题。详细来说,时区设置不正确。

这是我的代码(scala 语言):

val receptionDate = 
  new DateTime(tuple("RECEPTION_TIMESTAMP").asInstanceOf[Timestamp].getTime(), 
               DateTimeZone.UTC)

Timestamp对象直接从数据库table(HBase)读取,SQuirreL客户端显示的值如下:

2015-07-30 00:00:00.0

相反,创建的 DateTime 对象具有值 2015-07-29 22:00:00.0。很明显,在 DateTime 对象的创建过程中,它没有使用我传递给构造函数的时区 DateTimeZone.UTC 的信息。

我做错了什么?哪里出错了?

此问题是由于您使用 本地时区 (UTC-2) 来存储日期而未指定 UTC 时区,但是当您使用设置 Hbase 检索日期时 UTC 时区。所以它们是相等的时间,但不相同 Timezone.