387 public static String monthCodeToString(final int month) {
388
389 return monthCodeToString(month, false);
390
391 }
392
393 /**
394 * Возвращает строку, представляющую заданный месяц.
395 *
396 * Строка возвращается в форме длинного или короткого названия месяца
397 * из локального контекста по умолчанию.
398 *
399 * @param month месяц.
400 * @param shortened если
true
возвращает сокращенное
401 * название месяца.
402 *
403 * @return строка, представляющая заданный месяц.
404 * @throws java.lang.IllegalArgumentException
405 */
406 public static String monthCodeToString(final int month,
407 final boolean shortened) {
408
409 // Проверка аргументов...
410 if (!isValidMonthCode(month)) {
411 throw new IllegalArgumentException(
412 "SerialDate.monthCodeToString: month outside valid range.");
413 }
414
415 final String[] months;
416
417 if (shortened) {
418 months = DATE_FORMAT_SYMBOLS.getShortMonths();
419 }
420 else {
421 months = DATE_FORMAT_SYMBOLS.getMonths();
422 }
423
424 return months[month - 1];
425
426 }
427
428 /**
429 * Преобразует строку в код месяца.
430 *
431 * Метод возвращает одну из констант JANUARY, FEBRUARY, ...,
432 * DECEMBER, соответствующую заданной строке. Если строка не распознается,
433 * метод возвращает -1.
434 *
435 * @param s строка для обработки.
436 *
437 * @return
-1
, если строка не разбирается, месяц года
438 * в противном случае.
439 */
440 public static int stringToMonthCode(String s) {
441
442 final String[] shortMonthNames = DATE_FORMAT_SYMBOLS.getShortMonths();
443 final String[] monthNames = DATE_FORMAT_SYMBOLS.getMonths();
444
445 int result = -1;
446 s = s.trim();
447
448 // Сначала пытаемся разобрать строку как целое число (1–12)...
449 try {
450 result = Integer.parseInt(s);
451 }
452 catch (NumberFormatException e) {
453 // Подавление
454 }
455
456 // Теперь ищем по названиям месяцев...
457 if ((result < 1) || (result > 12)) {
458 for (int i = 0; i < monthNames.length; i++) {
459 if (s.equals(shortMonthNames[i])) {
460 result = i + 1;
461 break;