gpt4 book ai didi

java - TimeZone 困扰着我的日期时间解析

转载 作者:行者123 更新时间:2023-11-29 08:09:22 25 4
gpt4 key购买 nike

我不能使用 Joda。当我尝试从表示 UTC 日期或日期时间的字符串创建日期或日历时,生成的对象具有与之关联的时区...

代码如下:

案例一:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyDDD");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse("2012018");
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.setTime(date);
System.out.println(cal.getTime()); //Tue Jan 17 19:00:00 EST 2012 !?!*&#&??

案例二:

SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse("1202011431");
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.setTime(date);
System.out.println(cal.getTime()); //Wed Feb 01 09:31:00 EST 2012 !?!*&#&??

最佳答案

java.util.Date 类型的对象是自纪元以来的绝对时间量。当您从 Calendar 创建 Date 对象时,它会丢失 Calendar 可能一直在使用的任何 TimeZone,只为您提供原始时间量。 EST 与您的日期并没有真正“关联”,只是 Date 上的 toString 方法使用 JVM 默认时区来创建人类可读的表示形式。

了解上述代码示例中日历的使用绝对没有是很重要的。像那样改变时区只会改变该日历的人类可读表示。在您调用 setTimegetTime 之前和之后,自纪元以来的原始毫秒数相同。

(java.util.Date 上与人类可读表示相关的所有方法均已弃用且无法正常工作,最好假装它们不存在。)

关于java - TimeZone 困扰着我的日期时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198574/

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