在java中读取不同的日期格式

时间:2016-01-22 05:54:53

标签: java date

我有以下程序,其中日期模式没有正确反映,即我执行它我得到前两个日期的日期格式不正确。

请告知我如何在名为datePatternsOfUk的数组中进行更改,以便它适用于所有日期

import org.apache.commons.lang.time.DateUtils;

public class DateFormattingTest {

    private static final SimpleDateFormat outputDate = new SimpleDateFormat(
            "dd/MM/yyyy");

    public static void main(String[] args) {

        System.out.println ("03/20/2020-->:" + extractDate("03/20/2020") );
         System.out.println ("2033-05-01-->:" + extractDate("2033-05-01") );
        System.out.println ("08-05-34-->:" + extractDate("08-05-34") );
         System.out.println ("30-09-2013 -->:" + extractDate("30-09-2013") );

    public static Date extractDate(String dateStr) {

        String[] datePatternsOfUk = { "d-M-yy", "d-M-yyyy", "d/M/yy", "d/M/yyyy","dd-MM-yy", "yyyy-MM-dd", "dd-MMM-yy","dd-MMM-yyyy","dd-MM-yyyy",
                "dd/MM/yy","dd/MMM/yy","dd/MMM/yyyy"};

        Date date = null;

        try {
            date = DateUtils.parseDate(dateStr, datePatternsOfUk);
        }
        catch (Exception except) {
                except.printStackTrace();
        }
        return date;
    }

}

执行后,我得到以下不正确的结果

03/20/2020-->:Tue Aug 03 00:00:00 IST 2021
2033-05-01-->:Thu Nov 23 00:00:00 IST 2006
08-05-34-->:Mon May 08 00:00:00 IST 2034
30-09-2013 -->:Mon Sep 30 00:00:00 IST 2013

伙计们请告知如何克服这个

1 个答案:

答案 0 :(得分:1)

private static final String[] datePatternsOfUk = { "d-M-yy", "d-M-yyyy", "d/M/yy", "d/M/yyyy",
        "dd-MM-yy", "yyyy-MM-dd", "dd-MMM-yy", "dd-MMM-yyyy", "dd-MM-yyyy", "dd/MM/yy",
        "dd/MMM/yy", "dd/MMM/yyyy" };

public static Date extractDate(String dateStr) {

    for (String pattern : datePatternsOfUk) {

        try {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            sdf.setLenient(false);
            return sdf.parse(dateStr);
        } catch (Exception except) {
            except.printStackTrace();
        }
    }

    return null;
}

你的第一次约会不会被解析,因为" M / d / yyyy"不见了。