在 Java 中将月份字符串转换为整数

2022-09-01 07:13:42

给定一个月字符串,例如:

    "Feb"
or
    "February"

是否有任何核心 Java 或第三方库功能允许您以与区域设置无关的方式将此字符串转换为相应的月份号?


答案 1

您可以使用SimpleDateFormat解析月份:

    Date date = new SimpleDateFormat("MMM", Locale.ENGLISH).parse("Feb");
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int month = cal.get(Calendar.MONTH);
    System.out.println(month == Calendar.FEBRUARY);

与 int 相比要小心(它等于 2!最安全的方法是使用 的静态字段(如 )比较它们。int monthCalendarCalendar.FEBRUARY


答案 2

使用Joda时间的SimpleDateFormat的替代方案:

    import org.joda.time.DateTime;
    import org.joda.time.format.DateTimeFormat;
    import org.joda.time.format.DateTimeFormatter;
    ...

    // if default locale is ok simply omit '.withLocale(...)'
    DateTimeFormatter format = DateTimeFormat.forPattern("MMM");
    DateTime instance        = format.withLocale(Locale.FRENCH).parseDateTime("août");  

    int month_number         = instance.getMonthOfYear();
    String month_text        = instance.monthOfYear().getAsText(Locale.ENGLISH);

    System.out.println( "Month Number: " + month_number );
    System.out.println( "Month Text:   " + month_text   );

    OUTPUT:
        Month Number: 8
        Month Text:   August