月份不会从日期打印 - Java DateFormat

big*_*ata 10 java calendar date date-format

如何从java中的日期获取月份:

        DateFormat inputDF  = new SimpleDateFormat("mm/dd/yy");
        Date date1 = inputDF.parse("9/30/11");

        Calendar cal = Calendar.getInstance();
        cal.setTime(date1);

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

        System.out.println(month+" - "+day+" - "+year);
Run Code Online (Sandbox Code Playgroud)

此代码返回日期和年份,但不是月份.

输出:

0 - 30 - 2011
Run Code Online (Sandbox Code Playgroud)

das*_*ght 17

这是因为你的格式不正确:你需要"MM/dd/yy"一个月,因为"mm"是几分钟:

DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");
Date date1 = inputDF.parse("9/30/11");

Calendar cal = Calendar.getInstance();
cal.setTime(date1);

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

System.out.println(month+" - "+day+" - "+year);
Run Code Online (Sandbox Code Playgroud)

打印8 - 30 - 2011(因为月份是零基础; 演示)


rge*_*man 5

首先,您使用的mm是日期格式,根据Javadocs,这是"分钟".您将分钟设置为而9不是月份.看起来月份默认为0(1月).

使用MM(大写'M')来解析月份.然后,你会看到8,因为Calendar几个月内从0开始,而不是1.添加1以获取所需的内容9.

格列高利历和朱利安历的一年中的第一个月是1月,即0

// MM is month, mm is minutes
DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");  
Run Code Online (Sandbox Code Playgroud)

然后

int month = cal.get(Calendar.MONTH) + 1; // To shift range from 0-11 to 1-12
Run Code Online (Sandbox Code Playgroud)