【发布时间】:2016-10-11 14:44:18
【问题描述】:
我在字符串中有一个时间戳,它在 UTC 时区,我想在 UTC 时区使用 joda 时间库中的 DateTime 来读取它。
例子:
String utcTs = "2016-06-01T14:46:22.001Z";
当我尝试低于 stmt。时,DateTime 正在读取它并转换为应用程序正在运行的服务器时区!!
DateTime dtUtcTs = new DateTime(utcTs);
有没有办法可以强制 DateTime 将字符串时间戳读取为 UTC?
我的应用程序服务器在 CST,当使用 SOP stmt 打印日期时,如下所示,我观察的是 CST 时间而不是 UTC!!
System.out.println(dtUtcTs) ==> 为我提供运行应用程序的服务器中的日期!!
非常感谢!!
import org.joda.time.DateTime;
public class TestClass {
public static void main(String[] args) {
String utcTs = "2016-06-01T14:46:22.001Z";
DateTime dtUtcTs = new DateTime(utcTs);
System.out.println(dtUtcTs)
}
}
下面是我看到的输出,我的应用服务器是在 CST 区域
2016-06-01T09:46:22.001-05:00
使用 joda time 2.9.1 版
【问题讨论】:
-
@4castle a DateTime 确实有一个时区。 java util Date 的 joda 等价物是 Instant。
-
你确定你的文本最后真的有一个
Z吗?我希望这没问题,它可以在我的机器上运行。 -
@JonSkeet 是的,有
Z -
您如何确定它将其转换为服务器时区?请提供minimal reproducible example,以便我们重现。