gpt4 book ai didi

java - 为什么 Joda DateTime 给出的结果与 Java Date 不同?

转载 作者:搜寻专家 更新时间:2023-11-01 02:09:24 24 4
gpt4 key购买 nike

我测试了Joda DateTime 与 UTC 时区相对于 java.util.Date,我遇到了一个有趣的案例:

import org.joda.time.DateTime;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;

public class Main {

public static void main(String[] args) throws ParseException {
String dt = "2011-06-11T12:00:00Z";
String format = "yyyy-MM-dd'T'hh:mm:ss'Z'";

DateFormat df = new SimpleDateFormat(format);
df.setTimeZone(TimeZone.getTimeZone("UTC"));

Date d = df.parse(dt);
DateTime joda = new DateTime(dt);

// Output Sat Jun 11 05:00:00 PDT 2011
System.out.println(joda.toDate());

// Output Fri Jun 10 17:00:00 PDT 2011
System.out.println(d);
}
}

我想知道这是一个错误还是我错过了一些重要的东西?

最佳答案

(编辑:更清晰、更正确的答案)

我认为这是因为 JODA 和 Java 日期格式对 12 小时表示中的“12”的处理方式不同。其中一个将其视为午夜,而另一个将其视为中午。

<罢工>

将您的输入更改为 2011-06-11T01:00:00Z将证明我的假设。

这是因为,您正在使用 DateTime 的构造函数创建 JODA 时间,后者又使用 ISO 格式解析您的字符串,为此使用 24 小时格式: Default format used by JODA ,而您用来构造 Java Date 的 DateFormat 使用的是 hh for hour 字段,表示 12 小时格式。因此,他们对“12”的解释不同:12 小时制将其视为午夜,而 24 小时制将其视为中午。

最简单的更改是将格式更改为 yyyy-MM-dd'T'HH:mm:ss'Z'它使用 24 小时演示,那么它们都可以正常工作。

关于java - 为什么 Joda DateTime 给出的结果与 Java Date 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21324468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com