1

如何将 day_of_month、month 和 year 作为整数转换为参数?

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Calendar start_date = Calendar.getInstance();     
System.out.println(dateFormat.format(start_date.getTime()));

int day = start_date.get(Calendar.DAY_OF_MONTH);
int month = start_date.get(Calendar.MONTH);
int year = start_date.get(Calendar.YEAR);

String result = day + "/" + month + "/" + year;

但是,今天的日期是:01/12/12,而结果是:01/11/12。

4

6 回答 6

10

这是预期的行为。月份从 0 到 11。您可以通过发出以下命令进行检查:

System.out.println(Calendar.JANUARY);

顺便说一句,要将日期转换为字符串,您应该真正使用SimpleDateFormat

new SimpleDateFormat("dd/MM/yyyy").format(start_date.getTime());

(旁注,但很重要:SimpleDateFormat 不是线程安全的,非常不是线程安全的,所以不要尝试通过在多线程环境中将它们用作静态实例来进行优化!API 文档中也说明了这一点Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.:)

于 2012-12-01T12:38:04.637 回答
1

月份索引从 0 开始,这就是为什么给出 11

0- 一月。
.
.
12月11日

于 2012-12-01T12:38:43.070 回答
1

Calendar课堂上,月份从 0 开始,即一月,以 11 结束,即十二月。

打开 JDK 6 -

public final static int JANUARY = 0;
...
public final static int DECEMBER = 11;
于 2012-12-01T12:38:46.183 回答
1

MONTH(重点是我的)的文档中:

MONTH: get 和 set 的字段编号,表示月份。这是特定于日历的值。公历和儒略历中的第一个月是 JANUARY ,即 0;最后一个取决于一年中的月数。

人类日历从一月开始,而不是从零开始。这就是为什么 12 月结束时是 11 点而不是 12 点。

于 2012-12-01T12:39:05.877 回答
1

只是不要使用 java.util.Date 和 java 的其他不好的部分

从 Java 8 开始,joda 时间将在标准库中,所以我看不到使用错误代码的意义。

http://joda-time.sourceforge.net/

你不会有这个问题,相信我。

于 2012-12-01T12:40:42.933 回答
1

根据文档,结果start_date.get(Calendar.MONTH)int从 0 到 11,其中 0 是 1 月,11 是 12 月。

日历.月

于 2012-12-01T12:43:09.737 回答