一个月不从日期印刷 - Java的日期格式一个月不从日期印刷 - Java的日期格式(Month

2019-05-12 07:58发布

如何获得一个月从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);

此代码返回一天或一年,但不是月。

输出:

0 - 30 - 2011

Answer 1:

这是因为你的格式不正确:你需要"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);

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



Answer 2:

首先,你用mm在你的日期格式, 根据的Javadoc这是“分钟” 。 您设定分钟到9 ,而不是一个月。 它看起来像一个月默认为0(1月)。

使用MM (大写“M'S)本月解析。 然后,你会看到8 ,因为在Calendar月从0开始,而不是1 。 加入1取回所需的9

今年的阳历和罗马儒略历的第一个月是1月起为0

// MM is month, mm is minutes
DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");  

然后

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


Answer 3:

如果你读了SimpleDateFormat Javadoc中 ,你会发现, mm为分钟。 你需要MM为一个月。

DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");

否则,格式不读了month领域,是值0



Answer 4:

本月格式应该是MM而不是mm

 DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");


Answer 5:

时间为某人提供现代化的答案。 其他的答案是,当有人问在2013年和仍然是正确的很好的答案。 今天,没有理由为什么你应该用旧的,过时的,同时出了名的麻烦斗争SimpleDateFormat类。 java.time ,现代Java的日期和时间API,这么多更好一起工作:

    DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("M/d/yy");
    LocalDate date1 = LocalDate.parse("9/30/11", inputFormatter);
    System.out.println(date1);

这版画

2011-09-30

LocalDate类表示日期没有时间的天,你需要什么,你就需要很多的匹配程度比老班更准确DateCalendar

与使用的格式模式字符串DateTimeFormatter类似于那些从SimpleDateFormat ,也有一些不同之处。 您可以使用大写MM需要两个数字的月份(如09代表9)或单M ,让月与一个或两个数字被写入。 同样ddd为一个月的一天。 yy表示两位数的年份,并解释与基地2000年,也就是2000至2099年包容性(不会为我的生日合作)。

链接 : 甲骨文教程径:时间解释如何使用java.time



Answer 6:

尝试像这样使用MM ,而不是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);

打印的月份会8作为索引从0开始

或尝试: -

int month = cal.get(Calendar.MONTH) + 1;


Answer 7:

mm为分钟,用MM同时指定格式。

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

int month = cal.get(Calendar.MONTH);// returns month value index starts from 0


文章来源: Month is not printed from a date - Java DateFormat