java.util.Calendar 未正确设置月份

Posted

技术标签:

【中文标题】java.util.Calendar 未正确设置月份【英文标题】:java.util.Calendar not setting Month correctly 【发布时间】:2013-03-15 19:49:23 【问题描述】:

问题很简单。我想要的是创建一个日历并使用以下属性设置它: 日:17 月份:10(十月) 年份:1989

但是日历没有正确设置 MONTH。

这是代码:

Calendar fecha = new GregorianCalendar();
fecha.set(Calendar.DAY_OF_YEAR, 17);
fecha.set(Calendar.MONTH, Calendar.OCTOBER);
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(fecha.getTime()));

而我得到的是: 17/01/2013 ------------>月份不是 10 月

这有什么问题? 提前致谢!

【问题讨论】:

【参考方案1】:

如果您要设置月份和年份,那么在设置日期时,请使用DAY_OF_MONTH 而不是DAY_OF_YEAR

【讨论】:

【参考方案2】:
fecha.set(Calendar.DAY_OF_YEAR, 17);

属于一月

你需要设置Calendar.DATE

【讨论】:

【参考方案3】:

替换:

Calendar fecha = new GregorianCalendar();
fecha.set(Calendar.DAY_OF_MONTH, 17);
fecha.set(Calendar.MONTH, Calendar.OCTOBER);
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(fecha.getTime()));

【讨论】:

【参考方案4】:

您需要使用 DAY_OF_MONTH 而不是 DAY_OF_YEAR

【讨论】:

【参考方案5】:

试试这个,效果很好,还可以用文字显示月份。

  `Calendar fecha = new GregorianCalendar();
    fecha.set(Calendar.DAY_OF_MONTH, 17);
    fecha.set(Calendar.MONTH, Calendar.OCTOBER);
    System.out.println(new SimpleDateFormat("dd/MMMM/yyyy").format(fecha.getTime()));`

【讨论】:

以上是关于java.util.Calendar 未正确设置月份的主要内容,如果未能解决你的问题,请参考以下文章

如何结合 java.util.Calendar 和 HQL 之间

常用类一一时间处理相关类一一java.util.Tomezone(java.util.Calendar , java.util.Date , java.text.DateFormat)

java.util.Calendar.get* 和 java.util.Calendar.set* 被阻塞

java.util.Calendar简介

Java.util.Calendar.getInstance()方法实例

java.util.Date 和 java.util.Calendar 是不是已弃用?