这是我的代码:
月份在循环中传递。首先是 0(因为我输入的时间是 1 月),然后是 1,依此类推。下个月二月时,该循环将从该日期开始。 1、2 等
int thisMonth = Calendar.getInstance().get(Calendar.MONTH) + 1;
cal = Calendar.getInstance();
df = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);
cal.set(Calendar.MONTH, month + thisMonth);
String sMonth = df.format(cal.getTime());
在第一个循环中,sMonth
是 2015 年 3 月。
在第二个循环中,sMonth
是 2015 年 3 月。
在第三个循环中,sMonth
是 2015 年 4 月。
在第四个循环中,sMonth
是 2015 年 5 月。
..等等
如您所见,第一个月不是预期的二月。我相信今天是 1 月 29 日,所以这可能有一些原因,因为我们离二月已经很近了。但如果是这样的话,为什么会发生两次呢?
我知道,由于我不使用 unix 时间戳,所以事情并不准确,是否有办法计算这个,至少可以得到准确的月份排序?
最佳答案
由于今天是 30 号,您将获得当前日期 (2015-01-30),并增加月份以获得 2015-02-30 - 由于 2 月份不会“滚动”到 2015-03-02没有 30 天的时间。
避免此问题的一种方法是在更改月份之前将日期设置为 1。
关于java - 日历月份实例减少了一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227232/