在这篇文章中,我们将看到如何在Java中把月份名称转换成数字。
请注意,我们将使用**月名的前三个字母(第一个字母为大写)**来转换为数字。
在Java中,有多种方法可以将月名转换成数字。让我们来看看。
使用DateTimeFormatter和TemporalAccessor
如果你使用的是Java 8及以上版本,这是首选方案。
- 用给定的本地和
MMM作为模式创建DateTimeFormatter对象。 - 使用DateTimeFormatter的
parse()方法解析给定的月份名称,并获得TemporalAccessor对象。 - 使用
TemporalAccessor的get(ChronoField.MONTH_OF_YEAR)方法获得月号。
package org.arpit.java2blog;
import java.text.ParseException;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAccessor;
import java.util.Locale;
public class ConvertMonthNameToNumberJava8 {
public static void main(String[] args) throws ParseException {
int monthNumber1 = getNumberFromMonthName("Sep", Locale.ENGLISH);
System.out.println("Month number of September in English: "+monthNumber1);
int monthNumber2 = getNumberFromMonthName("févr.", Locale.FRENCH);
System.out.println("Month number of Oktober in German:"+monthNumber2);
}
public static int getNumberFromMonthName(String monthName, Locale locale) throws ParseException {
DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("MMM")
.withLocale(locale);
TemporalAccessor temporalAccessor = dtFormatter.parse(monthName);
return temporalAccessor.get(ChronoField.MONTH_OF_YEAR);
}
}
输出
Month number of September in English: 9
Month number of February in French: 2
使用日历类和SimpleDateFormat
你可以使用SimpleDateFormat ,将MonthName转换为Date对象,并将Date设置为Calendar实例,然后使用Calendar.get()方法来获取月号。
你可以根据你的要求指定Locale。
请注意,Calendar类遵循基于0的月份索引。
0代表一月
1代表二月
...
...
11代表十二月
package org.arpit.java2blog;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class ConvertMonthNameToNumberMain {
public static void main(String[] args) throws ParseException {
int monthNumber1 = getNumberFromMonthName("Sep", Locale.ENGLISH);
System.out.println("Month number of September in English: "+monthNumber1);
int monthNumber2 = getNumberFromMonthName("Okt", Locale.GERMAN);
System.out.println("Month number of Oktober in German:"+monthNumber2);
}
public static int getNumberFromMonthName(String monthName,Locale locale) throws ParseException {
Date date = new SimpleDateFormat("MMM", locale).parse(monthName);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.MONTH);
}
}
输出
Month number of September in English: 8
Month number of Oktober in German:9
如果你想要从1到12的数字,你可以简单地在上述代码的高亮行添加1。
return cal.get(Calendar.MONTH) + 1;
使用Month enum [ Java 8 ]
如果你只对英语地区感兴趣,你可以使用Month ENUM来获取月数。
package org.arpit.java2blog;
import java.time.Month;
public class ConvertMonthNameToNumberEnglish {
public static void main(String[] args) {
int monthNumber1 = getNumberFromMonthName("SEPTEMBER");
System.out.println("Month number of September in English: "+monthNumber1);
}
public static int getNumberFromMonthName(String monthName) {
return Month.valueOf(monthName.toUpperCase()).getValue();
}
}
输出
Month number of September in English: 9
请注意,你需要为Month枚举传递完整的月份名称,如SEPTEMBER。
以上就是关于如何在Java中把月份名称转换成数字的全部内容。