gpt4 book ai didi

java - 为什么这个日期是用不同的时区创建的?

转载 作者:行者123 更新时间:2023-11-29 05:57:56 25 4
gpt4 key购买 nike

这段代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD_HH-mm-ss");
Date date=null;
try {
date = format.parse("2012-07-04_13-42-03");
} catch (Exception e) {
}
File file = new File("File.txt");
Date now=new Date();
Date last= new Date(file.lastModified());
System.out.println("exec:"+date+" "+date.getTime()+" "+date.getTimezoneOffset());
System.out.println(" now:"+now+" "+now.getTime()+" "+now.getTimezoneOffset());
System.out.println("last:"+last+" "+last.getTime()+" "+last.getTimezoneOffset());

给出结果:

exec:Wed Jan 04 13:42:03 CET 2012 1325680923000 -60
now:Wed Jul 04 13:42:20 CEST 2012 1341402140349 -120
last:Mon Jul 02 17:26:37 CEST 2012 1341242797000 -120

如何从字符串中创建日期,以便与同一时区的其他日期进行比较?

最佳答案

Date 没有 时区。让您感到困惑的是 Date.toString() 总是 返回一个按系统默认时区格式化的值,而这正是 Date.getTimeZoneOffset 所做的

现在,在您的系统默认时区(中欧时间,从外观上看)与 UTC 的偏移量在一年中发生变化,时区缩写也是如此。这就是您所看到的:“中欧”时间 (UTC+1) 和“中欧夏令时”) (UTC+2) 之间的差异。这是当前系统时区中的时区信息,由您正在转换为字符串表示形式的 Date 值表示。

同样,Date 本身没有关于时区的信息。 只是一个时间点。您可以设置 SimpleDateFormat 在解析或格式化时使用的时区 - 这是另一回事。

您还应该考虑使用 Joda Time如果可能的话 - 它比 Java 中内置的 API 要好得多。

关于java - 为什么这个日期是用不同的时区创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328570/

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