How to create a universal date formatter in Java for Solr?

I have a request that you can pass the date in the following format before indexing the date to Solr The following is an example of a delivery date

String dateStr = "2012-05-23T00:00:00-0400";
String dateStr1 = "May 24,2012 04:57:40 GMT";
String dateStr2 = "2011-06-21";

The standard Solr format is "yyyy MM DD't'hh: mm: ss'z '"

I've tried simpledateformat, but I can't write a general program that supports various formats It will eventually throw a parsing exception

I have also tried joda time, but so far I have not successfully converted UTC

public static String toUtcDate(final String iso8601) {
        DateTime dt = ISO_PARSE_FORMAT.parseDateTime(iso8601);
        DateTime utcDt = dt.withZone(ZONE_UTC);
        return utcDt.toString(ISO_PRINT_FORMAT);
    }

Is there a standard library to achieve this goal?

Any pointers would be appreciated

thank you

Solution

I just tried various formats until I was popular:

public static String toUtcDate(String dateStr) {
    SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    // Add other parsing formats to try as you like:
    String[] dateFormats = {"yyyy-MM-dd","MMM dd,yyyy hh:mm:ss Z"}; 
    for (String dateFormat : dateFormats) {
        try {
            return out.format(new SimpleDateFormat(dateFormat).parse(dateStr));
        } catch (ParseException ignore) { }
    }
    throw new IllegalArgumentException("Invalid date: " + dateStr);
}

I didn't know there was a library that could do that

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>