在java中解析从零开始的月份字符串

时间:2015-04-08 15:08:58

标签: java parsing date

我正在尝试解析一个看起来像的字符串:

2015, 2, 31, 17, 0, 1

所以我想我会用

SimpleDateFormat("yyyy, MM, dd, hh, mm, ss")

但它假设月份是1。在这种情况下,月份(2)是3月。如何告诉SimpleDateFormat或任何其他类使用从零开始的月份进行解析?

2 个答案:

答案 0 :(得分:4)

使用Calendar

String[] yourString = "2015, 2, 31, 17, 0, 1".split(",");

Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, Integer.valueOf(yourString[0]));
c.set(Calendar.MONTH, Integer.valueOf(yourString[1]));
c.set(Calendar.DAY_OF_MONTH, Integer.valueOf(yourString[2]));
c.set(Calendar.HOUR_OF_DAY, Integer.valueOf(yourString[3]));
c.set(Calendar.MINUTE, Integer.valueOf(yourString[4]));
c.set(Calendar.SECOND, Integer.valueOf(yourString[5]));

答案 1 :(得分:0)

我可以看到一个解决方案

增加一个月
Date newDate = DateUtils.addMonths(new Date(), 1);

使用日历

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MONTH, 1);

默认情况下,月份为0的索引。见

Why is January month 0 in Java Calendar?

Why are months off by one with Java SimpleDateFormat?