Format date in yyyy-MM-dd hh:mm:ss format from whatever format

后端 未结 2 1462
悲哀的现实
悲哀的现实 2020-12-22 14:51

I am having various date String and want to format in particular format using java

String arr[] = {"Jul 02,2020 ","15-10-2015 10:20:56",&q         


        
2条回答
  •  温柔的废话
    2020-12-22 15:13

    I recommend you switch from the outdated and error-prone java.util date-time API to the rich set of modern date-time API. Using DateTimeFormatterBuilder, you can build a format including all expected date-time formats and hour, minute, second defaulting to 0.

    Demo

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.format.DateTimeFormatterBuilder;
    import java.time.temporal.ChronoField;
    
    public class Main {
        public static void main(final String[] args) {
            String arr[] = { "Jul 02,2020 ", "15-10-2015 10:20:56", "2015/10/26 12:10:39", "27-04-2016 10:22:56",
                    "April 7, 2020" };
            DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                            .appendPattern("[MMM d,yyyy]")
                                            .appendPattern("[dd-MM-yyyy HH:mm:ss]")
                                            .appendPattern("[yyyy/MM/dd HH:mm:ss]")
                                            .appendPattern("[dd-MM-yyyy HH:mm:ss]")
                                            .appendPattern("[MMMM d, yyyy]")
                                            .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
                                            .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
                                            .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
                                            .toFormatter();
    
            for (String s : arr) {
                LocalDateTime ldt = LocalDateTime.parse(s.trim(), formatter);
                System.out.println("LocalDate#toString: " + ldt + ", " + "Formatted: "
                        + ldt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            }
        }
    }
    

    Output:

    LocalDate#toString: 2020-07-02T00:00, Formatted: 2020-07-02 00:00:00
    LocalDate#toString: 2015-10-15T10:20:56, Formatted: 2015-10-15 10:20:56
    LocalDate#toString: 2015-10-26T12:10:39, Formatted: 2015-10-26 12:10:39
    LocalDate#toString: 2016-04-27T10:22:56, Formatted: 2016-04-27 10:22:56
    LocalDate#toString: 2020-04-07T00:00, Formatted: 2020-04-07 00:00:00
    

提交回复
热议问题