java - 日历月份实例减少了一位

标签 java calendar

这是我的代码:

月份在循环中传递。首先是 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/

相关文章:

java - 如何使用 Rxjava2 在 Room 数据库中的 Textview 上显示 Flowable 数据

java - Selenium Webdriver 和 Firefox Server Not Found 错误

java - 即使我添加 + 1,带有 DatePicker 的日历也总是返回上个月

python - 在数据库中存储复杂的时间间隔

javascript - 无法实现 Aeron 日历

java - Ant 与 Mercurial

java - 如何使用 FastDateFormat 格式化 UTC 时间?

html - 将元素放置在具有任意宽度但定义跨度的网格布局中

java - jpql SUM 一列

javascript - jQuery Datepicker,选择之后的事件,而不是 "onSelect"