java - 使用滚动方法设置日历字段

标签 java date calendar

我有以下代码

Calendar c = Calendar.getInstance();
c.set(2013, 12, 31);
System.out.println(c.getTime() + " " +c.DATE + " " + c.MONTH + " " + c.YEAR);
c.roll(Calendar.MONTH, 1);
System.out.println(c.getTime() + " " +c.DATE + " " + c.MONTH + " " + c.YEAR);

我异常(exception)的是我的日期 c 设置为 2013 年 12 月 31 日,当我在不更改较大字段滚动方法的情况下向月份添加 1 时,应该向月份添加 1 以获得 1 月... 但我得到的输出如下:

Tue Dec 31 13:49:51 EST 2013 5 2 1
Thu Jan 31 13:49:51 EST 2013 5 2 1

为什么 c.Date、c.Month 和 Year 返回这些值..有什么想法吗?

我引用javadocs来理解,还有其他网站可以更好地解释这些字段吗?

最佳答案

Calendar#roll只会滚动(增加/减少)您指定的字段的值,并且不会更新日历中的其他字段 。由于您滚动月份,因此只有月份会受到影响,而不是年份、日期或任何其他字段。

另外,请注意 Calendar#DATECalendar#MONTHCalendar#YEAR 是类的常量,它们不是字段。使用Calendar#get相反:

System.out.println(c.getTime() + " " + c.get(Calendar.DATE) + " " + c.get(Calendar.MONTH) + " " + c.get(Calendar.YEAR));

关于java - 使用滚动方法设置日历字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209410/

相关文章:

java - 在 Java servlet 中,为什么只为上下文、请求和 session 范围定义属性?

data-binding - Grails 日期绑定(bind)

android - 日期/时间比 Android 晚 6 小时

java - 日本日期验证 - 比较

java - 使用 UTCOffset 解析日期字符串

jquery - 日期选择器隐藏日历以显示月年和完整日历无法正常工作

java - Lucene中找不到文档

java - 检测当前线程是否为 ExecutorService 线程

java - 打印出一个 ASCII 圆和轴

javascript - d3js v4 - 刷机精度,如何获得毫秒