2012-10-26 1093 views
2

我传递“1月”,“2月”等...作为整数数据库我需要通过1-12相应的月份,但我得到0从-11日历需要得到字符串月作为int

这是林怎么做,请帮我捏捏这得到个月1-12代替为0-11

//Get month as an integer. 
Date date = new SimpleDateFormat("MMM", Locale.ENGLISH).parse(stringMonth); 
Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
int month = cal.get(Calendar.MONTH); 
System.out.println("month ==" + month); 

回答

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

日历的一个月0索引(一月= 0)。就像上面的代码看起来那么奇怪,它在Java中很常见,因为Calendar中的月份索引相当奇怪。

这个帖子有这个话题的讨论:Why is January month 0 in Java Calendar

+0

Thanx为快速回复 –

+0

+1来翻转范围' 0,11]'到'[1,12]'的范围内,你需要'+ 1' –

1

这是因为Calendar类从[0-11]使用Month指数

因此,要从[1-12]获得索引,您可以加1所获得的索引: -

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

感谢您的回复..... –

+0

不客气:) –

1

要么改变:

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

System.out.println("month ==" + (month) + 1) ; 

(但不要做他们两个!)

这会在您的month的所代表的位置上添加1的“偏移量”,因此将它从0-11移到1-12 =)