gpt4 book ai didi

java - 时区和 SimpleDateFormat 奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 03:40:27 26 4
gpt4 key购买 nike

如果我执行这段代码:

String data = "08/02/1941";
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse(data);

我输出了日期:Sat Feb 08 01:00:00 CEST 1941

如果我执行此代码:

String data = "08/02/1971";
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse(data);

日期是:1971 年欧洲中部时间 2 月 8 日星期六 01:00:00

为什么会有这种差异(CET 和 CEST)?

我的时区是欧洲/柏林 (UTC+1),我使用的是 Java 1.7.0_67-b01

最佳答案

war 时期 - 改变时区

夏令时为 observed all year long in 1941在柏林。根据此history of DST in Europe.被一些人称为“希特勒时间”

欧洲时区 shifted around dramatically war 期间和 war 结束后。例如,this post (据称来自格林威治皇家天文台)描述了其中一些变化,包括“双”DST。这些转变是时区在历史上发挥重要作用的有趣案例。 At least one academic使用“时间政治”一词来形容这种现象。

仅限日期

如果您想要表示没有时间和时区的日期,请使用 LocalDate 类。

LocalDate ld = LocalDate.of( 1941 , Month.FEBRUARY , 8 ) ;

ld.toString(): 1941-02-08

上面讨论的时区问题消失了。

关于java - 时区和 SimpleDateFormat 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914327/

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