Преобразовать строку месяца в Integer в Java - PullRequest
29 голосов
/ 16 февраля 2010

Учитывая строку месяца, такую ​​как:

    "Feb"
or
    "February"

Существуют ли какие-либо основные функции Java или сторонних библиотек, которые позволили бы вам преобразовать эту строку в соответствующий номер месяца независимо от локали?

Ответы [ 5 ]

44 голосов
/ 16 февраля 2010

Вы можете проанализировать месяц, используя 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 month с целым числом (оно не равно 2!). Безопаснее всего сравнивать их, используя статические поля Calendar (например, Calendar.FEBRUARY).

27 голосов
/ 16 февраля 2010

Альтернатива SimpleDateFormat с использованием времени Joda:

    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
5 голосов
/ 09 мая 2017

Java 8 решение:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("MMM")
                                            .withLocale(Locale.ENGLISH);
TemporalAccessor accessor = parser.parse("Feb");
System.out.println(accessor.get(ChronoField.MONTH_OF_YEAR));  // prints 2
3 голосов
/ 16 февраля 2010
2 голосов
/ 19 февраля 2018

Вы могли бы просто установить статус переключателя, что-то вроде этого (ниже). Я публикую это на тот случай, если кто-то захочет получить простое и понятное решение. Я знаю, что хотел бы это, прежде чем набрать это:

switch(input2) {
            case "january":
            case "jan":
                input2 = "1";
            break;

            case "febuary":
            case "feb":
                input2 = "2";
            break;

            case "march":
            case "mar":
                input2 = "3";
            break;

            case "april":
            case "apr":
                input2 = "4";
            break;

            case "may":
                input2 = "5";
            break;

            case "june":
            case "jun":
                input2 = "6";
            break;

            case "july":
            case "jul":
                input2 = "7";
            break;

            case "august":
            case "aug":
                input2 = "8";
            break;

            case "september":
            case "sep":
            case "sept":
                input2 = "9";
            break;

            case "october":
            case "oct":
                input2 = "10";
            break;

            case "november":
            case "nov":
                input2 = "11";
            break;

            case "december":
            case "dec":
                input2 = "12";
            break;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...