Java 在日历中添加小时会更改时区

问题描述 投票:0回答:1

所以我有一个问题,我必须找到下一个重复发生的事件。 在我的解决方案中,我必须向日历添加小时,但有时时区正在变化,日期时间也在变化。 另外我必须提到,我只能使用

java.util.*;
java.text.*
中的类。

        Calendar c = new GregorianCalendar();
        c.setTime(getDataInceput());
        while(c.getTime().before(this.dataP)) {
            c.add(Calendar.HOUR_OF_DAY, numarOre);
            System.out.println(c.getTime());
        }

在我的示例中,我必须为此日期添加 24 小时

2019-03-09 22:46:00

Sun Mar 10 22:46:00 EET 2019
Mon Mar 11 22:46:00 EET 2019
Tue Mar 12 22:46:00 EET 2019
Wed Mar 13 22:46:00 EET 2019
Thu Mar 14 22:46:00 EET 2019
Fri Mar 15 22:46:00 EET 2019
Sat Mar 16 22:46:00 EET 2019
Sun Mar 17 22:46:00 EET 2019
Mon Mar 18 22:46:00 EET 2019
Tue Mar 19 22:46:00 EET 2019
Wed Mar 20 22:46:00 EET 2019
Thu Mar 21 22:46:00 EET 2019
Fri Mar 22 22:46:00 EET 2019
Sat Mar 23 22:46:00 EET 2019
Sun Mar 24 22:46:00 EET 2019
Mon Mar 25 22:46:00 EET 2019
Tue Mar 26 22:46:00 EET 2019
Wed Mar 27 22:46:00 EET 2019
Thu Mar 28 22:46:00 EET 2019
Fri Mar 29 22:46:00 EET 2019
Sat Mar 30 22:46:00 EET 2019
Sun Mar 31 23:46:00 EEST 2019
Mon Apr 01 23:46:00 EEST 2019
Tue Apr 02 23:46:00 EEST 2019
Wed Apr 03 23:46:00 EEST 2019
Thu Apr 04 23:46:00 EEST 2019
Fri Apr 05 23:46:00 EEST 2019
Sat Apr 06 23:46:00 EEST 2019
Sun Apr 07 23:46:00 EEST 2019
Mon Apr 08 23:46:00 EEST 2019
Tue Apr 09 23:46:00 EEST 2019
Wed Apr 10 23:46:00 EEST 2019
Thu Apr 11 23:46:00 EEST 2019
Fri Apr 12 23:46:00 EEST 2019
Sat Apr 13 23:46:00 EEST 2019
Sun Apr 14 23:46:00 EEST 2019
Mon Apr 15 23:46:00 EEST 2019
Tue Apr 16 23:46:00 EEST 2019
Wed Apr 17 23:46:00 EEST 2019
Thu Apr 18 23:46:00 EEST 2019
Fri Apr 19 23:46:00 EEST 2019

我怎样才能做到这一点以获得

2019-04-19 22:46:00

java
1个回答
0
投票

您的情况下时区没有改变。时间从东欧时间切换到东欧夏令时间,但仍然是相同的时区。由于 EET 使用夏令时,日历中的时间部分会在 3 月 31 日发生变化。

您的代码可以将日期/时间转换为 UTC 时区并用于查找下一个事件。如果您需要在某处显示日期/时间,可以将其转换回观看者的时区。 UTC 的优点是它不使用夏令时,因此您不会像示例中那样跳过小时。

© www.soinside.com 2019 - 2024. All rights reserved.