我需要解析日期
日期格式为:
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
你能帮助我吗,出了什么问题?
答案 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来指定字符串所在的格式,如本例所示。