Java日历 - 获取正确日期的问题

时间:2014-05-21 13:40:47

标签: java calendar

我需要解析日期

日期格式为:

2014-05-21 04:15:00.0

当我试图解析它时,我得到了stange信息:

    java.util.Calendar calendarEventStart = GregorianCalendar.getInstance();
    calendarEventStart.setTime(dateStart);

    parseDateToCalendar.setYearStart(calendarEventStart.get(calendarEventStart.YEAR));
    parseDateToCalendar.setMonthStart(calendarEventStart.get(calendarEventStart.MONTH));
    parseDateToCalendar.setDayStart(calendarEventStart.get(calendarEventStart.DAY_OF_MONTH));
    parseDateToCalendar.setHourStart(calendarEventStart.get(calendarEventStart.HOUR_OF_DAY));
    parseDateToCalendar.setMonthStart(calendarEventStart.get(calendarEventStart.MINUTE));

显示:

parseDateToCalendar.getYearStart() = 2014 - THIS IS OK (YEAR)
parseDateToCalendar.getMonthStart() = 30 - !!WRONG - THIS SHOULD BE MINUTE
parseDateToCalendar.getDayStart() = 21 - THIS IS OK (DAY)
parseDateToCalendar.getHourStart() = 4 - !!WRONG - THIS SHOULD BE MONTH
parseDateToCalendar.getMinuteStart() = 0 - !!WRONG - HERE SHOULD BE VALUE FROM MONTH

你能帮助我吗,出了什么问题?

4 个答案:

答案 0 :(得分:2)

你刚刚混淆了方法名称,

parseDateToCalendar.getYearStart() = 2014 - THIS IS OK (YEAR)
parseDateToCalendar.getMinuteStart() = 30 - CORRECT - THIS SHOULD BE MINUTE
parseDateToCalendar.getDayStart() = 21 - THIS IS OK (DAY)
parseDateToCalendar.getMonthStart() = 4 - CORRECT - THIS SHOULD BE MONTH
// 'Value from Month?'
// parseDateToCalendar.getMinuteStart() = 0 - !!WRONG - HERE SHOULD BE VALUE FROM MONTH

答案 1 :(得分:1)

以下是使用Java解析日期格式的常用方法:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = sdf.parse("2014-05-21 04:15:00.0");

有关详细信息,请参阅SimpleDateFormat javadoc:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 2 :(得分:0)

你是如何获得dateStart值的?

我建议使用java的SimpleDataFormat来解析字符串。格式字符串应为yyyy-MM-dd hh:mm:ss.S

P.S在java8中查看the new time API。比好日历

更方便

答案 3 :(得分:0)

dateStart必须是java.util.Date。您是否尝试使用dateStart.toString()将其打印出来?

我的猜测是日历错误,因为日期错误,日期错误,因为它需要的格式与您使用的格式不同。也许您可以使用DateFormat或SimpleDateFormat来指定字符串所在的格式,如本例所示。

http://www.mkyong.com/java/java-date-and-calendar-examples/