gpt4 book ai didi

java - java(Android)中通过日历函数获取负值

转载 作者:行者123 更新时间:2023-12-01 23:30:59 25 4
gpt4 key购买 nike

我正在使用下面的代码,但得到了不应该的 -ve 值!..

Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2013, 10, 31, 23, 00);

ctim=calendar.getTimeInMillis();//system time at shut down


calendar.clear();
calendar.set(2013, 11, 1, 1, 00);
long cTime = calendar.getTimeInMillis();//system time at restart
timediff = cTime-ctim;

我不知道哪里出了问题..??!!

最佳答案

问题就在这里。 Java 中的月份表示为 0-11,而不是 1-12。 Javadocs for the Calendar.MONTH说:

Field number for get and set indicating the month. This is a calendar-specific value. The first month of the year in the Gregorian and Julian calendars is JANUARY which is 0; the last depends on the number of months in a year.

因此,第一个被解释为 11 月 31 日或 12 月 1 日(日历默认为“宽松”),因为 11 月有 30 天。第二个日期也被解释为 12 月 1 日。

所以两次,当用 SimpleDateFormat 打印出来时“yyyy-MM-dd HH:mm:ss” 是:

2013-12-01 23:00:00
2013-12-01 01:00:00

这是负 22 小时的差异,对应于您获得的 -79200000 毫秒。

从您输入的月份中减去 1:

calendar.set(2013, 9, 31, 23, 00);  // 9 here is October

calendar.set(2013, 10, 1, 1, 00);   // 10 here is November

你会得到积极的改变。

关于java - java(Android)中通过日历函数获取负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300287/

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