line
包含用户提供的月份名称。我想显示月份编号。
示例:june -> 6
现在代码:
String line="june";
int monthNo = Integer.parseInt(GregorianCalendar.class.getField(line.toUpperCase()).get(line))+1;
System.out.println(monthNo);
这样做的最佳方法是什么?
修改
使用现有的日历类
答案 0 :(得分:4)
我建议你使用一个组合框,或一个限制用户输入任何内容的控件,并将其映射到一个恒定的字段。
然后你可以使用GregorianCalendar
int selectedMonth = c.get(Calendar.MONTH) + 1;
(从索引开始时为+1)
(c
是GregorianCalendar的实例)
答案 1 :(得分:3)
只是为了用Calendar
这样做,我将提供这个解决方案。
DateFormat df = new SimpleDateFormat("MMMM");
try {
Date date = df.parse("july");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.print(cal.get(Calendar.MONTH));
} catch (Exception e){
}
请注意,这根本不是最好的方法,我建议您使用枚举。
答案 2 :(得分:2)
Java的日历API并不是最好的API。因此,许多人改为使用http://www.joda.org/joda-time/作为准替代标准。但是如果您的应用程序非常简单,我认为硬编码指向数字的名称映射将是最简单和最有效的解决方案(假设,您的字符串实际上是用户输入,否则,使用建议的枚举)。或者,您可以使用date format。