我的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,不是吗?
如果您输入的日期是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小时