Java:为什么Calendral.setTimeInMillis(0)设置不正确的时间

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

我的Android应用程序(在Java中,在Android Studio中为Java)使用类“日历”。之后

Calendar cal=Calendar.getInstance();
cal.setTimeInMillis(0);
Log.i("Interim",cal.getTime().toString());

此类输出产生:I/Interim: Thu Jan 01 03:00:00 GMT+02:00 1970。我的时区是格林尼治标准时间+02:00(乌克兰基辅),一月的夏令时未应用。为什么将日历时间设置为03:00?我希望00:00(不考虑时区)或02:00(以时区为准),但是为什么03:00?

预先感谢您的任何想法

PS为澄清情况,我将Calendar时区设置为GMT并获得小时值:

Calendar cal=Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(0);
Log.i("Interim hours",Integer.toString(cal[i].get(Calendar.HOUR)));
Log.i("Interim",cal.getTime().toString());

与预期相反,输出为:

I /临时工时:0

I / Interim:Thu Jan 01 03:00:00 GMT + 02:00 1970

因此,小时字段的值为0,但时间为03:00。我刚刚在1975年6月13日听说过大约1个小时的班次,但这似乎只涉及越南TZ,不是吗?

java android-studio calendar timezone-offset
1个回答
0
投票

如果您输入的日期是1975年6月13日之前,则结果总是+1小时。那天有25个小时。您可以检查它https://currentmillis.com/。如果输入13/06/1975,我们得到171824400000,而12/06/1975我们得到171734400000。

171824400000-171734400000 = 90000000。

90000000 /(60 * 60 * 1000)= 25(???)

所以,如果您在1975年6月13日之前输入内容,我认为您可以加上1小时

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