我得到像String val = "2012-08-01T12:00"
这样的值的字符串,并且我使用以下代码从中创建日历类型,问题是当我打印07月而不是08的数据时,如何解决它得到确切的月份?
1-7-2012-12-0-0
SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
Date date = null;
date = parserSDF.parse(Val);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.DAY_OF_MONTH) + "-" + cal.get(Calendar.MONTH) + "-"
+ cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.HOUR_OF_DAY) + "-" + cal.get(Calendar.MINUTE)
+ "-" + cal.get(Calendar.SECOND));
答案 0 :(得分:5)
你的问题在这里:
cal.get(Calendar.MONTH)
1月= 0(不 1),2月= 1(不是2 )等
答案 1 :(得分:1)
month
基于0,所以你得到的就好了。
答案 2 :(得分:1)
只需添加一个。
Calendar
returns the month in the range 0-11,因此添加1
会将其转换为我们熟悉的1-12范围。
引用上面链接的javadoc:
格里高利和朱利安日历中的第一个月是 1月份是0
答案 3 :(得分:1)
日历中的月份为零索引。如果您想获得一个索引月份,则需要使用格式为SimpleDateFormat
的其他 MM
。
因此,您可以使用
代替奇怪的String
连接
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
System.out.println(formatter.format(cal));