0

我有一个从 JSON 获得的日期字符串“2012-01-26”。

我现在必须检查月份和年份是否与当前年份一样,而不是在 ListView 中显示数据。

SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-DD");
  try {
      Calendar c = Calendar.getInstance(); 
      c.setTime(dateFormat.parse(event_start_date));
      int month = c.get(Calendar.MONTH);
      System.out.println(c.get(Calendar.YEAR));
      System.out.println("month is"+month);
 }

年份值始终正确,但月份始终为零。我想念什么?

4

6 回答 6

2

您正在使用日历的实例获取月份。

int month = c.get(Calendar.MONTH);

所以你会得到当前月份(即一月)它意味着0。所以结果是正确的。

检查这个

month - 为与Calendar兼容而设置的月份 (0-11) 。

如果您想要 的月份event_start_date,那么您根本不必使用日历的实例。

您可以使用

int month = event_start_date.getMonth();
于 2013-01-08T09:24:35.367 回答
2
于 2021-06-21T08:37:48.330 回答
1

月份从 0 开始 - 这意味着您将获得 1 月。来自 Calendar.java:

public final static int JANUARY = 0;
于 2013-01-08T09:23:55.483 回答
1

月份是从零开始的(一月 = 0),因此您必须添加一个。

于 2013-01-08T09:24:10.013 回答
1

阅读java文档;)

MONTH 它说:

Field number for get and set indicating the month. This is a calendar-specific value. The first month of the year is JANUARY which is 0; the last depends on the number of months in a year.
于 2013-01-08T09:28:04.200 回答
0

这是因为日历中的月份从 0(一月)开始,一直持续到 11(十二月)

于 2013-01-08T09:25:44.990 回答