Java Parse Date parseDate(String str, Locale locale, String... parsePatterns)

Here you can find the source of parseDate(String str, Locale locale, String... parsePatterns)

Description

Parses a string representing a date by trying a variety of different parsers, using the default date format symbols for the given locale.

The parse will try each parse pattern in turn.

License

Open Source License

Parameter

Parameter Description
str the date to parse, not null
locale the locale whose date format symbols should be used. If <code>null</code>, the system locale is used (as per #parseDate(String,String) ).
parsePatterns the date format patterns to use, see SimpleDateFormat, not null

Exception

Parameter Description
IllegalArgumentException if the date string or pattern array is null
ParseException if none of the date patterns were suitable (or there were none)

Return

the parsed date

Declaration

public static Date parseDate(String str, Locale locale, String... parsePatterns) throws ParseException 

Method Source Code


//package com.java2s;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    /**/*from   w  w w. java  2s . co  m*/
     * <p>Parses a string representing a date by trying a variety of different parsers.</p>
     * <p/>
     * <p>The parse will try each parse pattern in turn.
     * A parse is only deemed successful if it parses the whole of the input string.
     * If no parse patterns match, a ParseException is thrown.</p>
     * The parser will be lenient toward the parsed date.
     *
     * @param str           the date to parse, not null
     * @param parsePatterns the date format patterns to use, see SimpleDateFormat, not null
     * @return the parsed date
     * @throws IllegalArgumentException if the date string or pattern array is null
     * @throws ParseException           if none of the date patterns were suitable (or there were none)
     */
    public static Date parseDate(String str, String... parsePatterns) throws ParseException {
        return parseDate(str, null, parsePatterns);
    }

    /**
     * <p>Parses a string representing a date by trying a variety of different parsers,
     * using the default date format symbols for the given locale.</p>
     * <p/>
     * <p>The parse will try each parse pattern in turn.
     * A parse is only deemed successful if it parses the whole of the input string.
     * If no parse patterns match, a ParseException is thrown.</p>
     * The parser will be lenient toward the parsed date.
     *
     * @param str           the date to parse, not null
     * @param locale        the locale whose date format symbols should be used. If <code>null</code>,
     *                      the system locale is used (as per {@link #parseDate(String, String...)}).
     * @param parsePatterns the date format patterns to use, see SimpleDateFormat, not null
     * @return the parsed date
     * @throws IllegalArgumentException if the date string or pattern array is null
     * @throws ParseException           if none of the date patterns were suitable (or there were none)
     * @since 3.2
     */
    public static Date parseDate(String str, Locale locale, String... parsePatterns) throws ParseException {
        return parseDateWithLeniency(str, locale, parsePatterns, true);
    }

    /**
     * <p>Parses a string representing a date by trying a variety of different parsers.</p>
     * <p/>
     * <p>The parse will try each parse pattern in turn.
     * A parse is only deemed successful if it parses the whole of the input string.
     * If no parse patterns match, a ParseException is thrown.</p>
     *
     * @param str           the date to parse, not null
     * @param locale        the locale to use when interpretting the pattern, can be null in which
     *                      case the default system locale is used
     * @param parsePatterns the date format patterns to use, see SimpleDateFormat, not null
     * @param lenient       Specify whether or not date/time parsing is to be lenient.
     * @return the parsed date
     * @throws IllegalArgumentException if the date string or pattern array is null
     * @throws ParseException           if none of the date patterns were suitable
     * @see java.util.Calender#isLenient()
     */
    public static Date parseDateWithLeniency(String str, Locale locale, String[] parsePatterns, boolean lenient)
            throws ParseException {
        if (str == null || parsePatterns == null) {
            throw new IllegalArgumentException("Date and Patterns must not be null");
        }

        SimpleDateFormat parser;
        if (locale == null) {
            parser = new SimpleDateFormat();
        } else {
            parser = new SimpleDateFormat("", locale);
        }

        parser.setLenient(lenient);
        ParsePosition pos = new ParsePosition(0);
        for (String parsePattern : parsePatterns) {

            String pattern = parsePattern;

            // LANG-530 - need to make sure 'ZZ' output doesn't get passed to SimpleDateFormat
            if (parsePattern.endsWith("ZZ")) {
                pattern = pattern.substring(0, pattern.length() - 1);
            }

            parser.applyPattern(pattern);
            pos.setIndex(0);

            String str2 = str;
            // LANG-530 - need to make sure 'ZZ' output doesn't hit SimpleDateFormat as it will ParseException
            if (parsePattern.endsWith("ZZ")) {
                str2 = str.replaceAll("([-+][0-9][0-9]):([0-9][0-9])$", "$1$2");
            }

            Date date = parser.parse(str2, pos);
            if (date != null && pos.getIndex() == str2.length()) {
                return date;
            }
        }
        throw new ParseException("Unable to parse the date: " + str, -1);
    }
}

Related

  1. parseDate(String str)
  2. parseDate(String str)
  3. parseDate(String str)
  4. parseDate(String str, boolean strict, String... parsePatterns)
  5. parseDate(String str, DateFormat df)
  6. parseDate(String str, String pattern)
  7. parseDate(String str, String timezone)
  8. parseDate(String str, String[] parsePatterns)
  9. parseDate(String str, String[] parsePatterns)