Java String to Date stringToDate(String source)

Here you can find the source of stringToDate(String source)

Description

string To Date

License

Open Source License

Declaration

public static java.util.Date stringToDate(String source) 

Method Source Code


//package com.java2s;
//License from project: Open Source License 

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class Main {
    public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMAT = "yyyy-MM-dd";
    public static final String TIME_FORMAT = "HH:mm:ss";

    public static java.util.Date stringToDate(String source) {
        TimeZone localTimeZone = getDateFormatter().getTimeZone();
        return stringToDate(source, localTimeZone);
    }// ww w  .java 2s  . c  o  m

    public static java.util.Date stringToDate(String source, TimeZone timeZone) {
        // check input
        if (source == null) {
            throw new IllegalArgumentException("null argument not allowed");
        }

        java.util.Date result;
        try {
            boolean hasColon = (source.indexOf(':') != -1);
            boolean hasMinusSign = (source.indexOf('-') != -1);
            int length = source.length();

            // datetime format
            if ((length == DATE_TIME_FORMAT.length()) || (hasColon && hasMinusSign)) {
                SimpleDateFormat fullTimestampFormatter = getFullTimestampFormatter();
                fullTimestampFormatter.setTimeZone(timeZone);
                result = fullTimestampFormatter.parse(source);
                // date format
            } else if ((source.length() == DATE_FORMAT.length()) || (hasMinusSign)) {
                SimpleDateFormat dateFormatter = getDateFormatter();
                dateFormatter.setTimeZone(timeZone);
                result = dateFormatter.parse(source);
                // time format
            } else if ((source.length() == TIME_FORMAT.length()) || (hasColon)) {
                SimpleDateFormat timeFormatter = getTimeFormatter();
                timeFormatter.setTimeZone(timeZone);
                result = timeFormatter.parse(source);
            } else {
                throw new IllegalArgumentException("unsupported date format: \"" + source + "\"");
            }
        } catch (java.text.ParseException e) {
            return new Date();
        }

        return result;
    }

    public static SimpleDateFormat getDateFormatter() {
        return new SimpleDateFormat(DATE_FORMAT);
    }

    public static SimpleDateFormat getDateFormatter(String format) {
        return new SimpleDateFormat(format);
    }

    public static DateFormat getFullTimestampFormatter(Locale locale) {
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale);

        String localeString = locale.toString();
        if (localeString.equals("zh_SG")) {
            return new SimpleDateFormat("dd/MM/yyyy a hh:mm");
        } else if (localeString.equals("ko")) {
            return changeDateFormatPattern(dateFormat, "y+\\. *M+\\. *d+", "yyyy-MM-dd");
        }

        // change year format to long format (e.g. 2012)
        return changeDateFormatPattern(dateFormat, "y+", "yyyy");
    }

    public static SimpleDateFormat getFullTimestampFormatter() {
        return new SimpleDateFormat(DATE_TIME_FORMAT); // m_fullTimestampFormatter;
    }

    public static SimpleDateFormat getTimeFormatter() {
        return new SimpleDateFormat(TIME_FORMAT); // m_timeFormatter;
    }

    private static DateFormat changeDateFormatPattern(final DateFormat dateFormat, String regex,
            String replacement) {
        if (dateFormat instanceof SimpleDateFormat) {
            SimpleDateFormat simpleDateFormat = (SimpleDateFormat) dateFormat;

            String pattern = simpleDateFormat.toPattern().replaceAll(regex, replacement);
            simpleDateFormat.applyPattern(pattern);

            return simpleDateFormat;
        }
        return dateFormat;
    }
}

Related

  1. stringToDate(String s)
  2. StringToDate(String s)
  3. stringToDate(String s, DateFormat formatter)
  4. stringToDate(String s, String format)
  5. stringToDate(String sDate)
  6. stringToDate(String source, String format)
  7. StringToDate(String str)
  8. stringToDate(String str)
  9. stringToDate(String str, String format)