diff --git a/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormat.java b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormat.java new file mode 100644 index 0000000000..a82f3bce2b --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormat.java @@ -0,0 +1,20 @@ +package com.baeldung.parsingDates; + +import java.util.Arrays; +import java.util.List; +import org.joda.time.LocalDate; +import org.joda.time.format.DateTimeFormat; + +public class SimpleDateTimeFormat { + + public static LocalDate parseDate(String date) { + List patternList = Arrays.asList("MM/dd/yyyy", "dd.MM.yyyy", "yyyy-MM-dd"); + for (String pattern : patternList) { + try { + return DateTimeFormat.forPattern(pattern).parseLocalDate(date); + } catch (IllegalArgumentException e) { + } + } + return null; + } +} diff --git a/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormater.java b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormater.java new file mode 100644 index 0000000000..aa12038032 --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateTimeFormater.java @@ -0,0 +1,17 @@ +package com.baeldung.parsingDates; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; + +public class SimpleDateTimeFormater { + + public static LocalDate parseDate(String date) { + DateTimeFormatterBuilder dateTimeFormatterBuilder = new DateTimeFormatterBuilder() + .append(DateTimeFormatter.ofPattern("[MM/dd/yyyy]" + "[dd-MM-yyyy]" + "[yyyy-MM-dd]")); + + DateTimeFormatter dateTimeFormatter = dateTimeFormatterBuilder.toFormatter(); + + return LocalDate.parse(date, dateTimeFormatter); + } +} diff --git a/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateUtils.java b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateUtils.java new file mode 100644 index 0000000000..8a154d3cd8 --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleDateUtils.java @@ -0,0 +1,18 @@ +package com.baeldung.parsingDates; + +import java.text.ParseException; +import java.util.Date; +import org.apache.commons.lang3.time.DateUtils; + +public class SimpleDateUtils { + + public static Date parseDate(String date) { + try { + return DateUtils.parseDateStrictly(date, + new String[]{"yyyy/MM/dd", "dd/MM/yyyy", "yyyy-MM-dd"}); + } catch (ParseException ex) { + return null; + } + } + +} diff --git a/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleParseDate.java b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleParseDate.java new file mode 100644 index 0000000000..cb024eea53 --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/parsingDates/SimpleParseDate.java @@ -0,0 +1,19 @@ +package com.baeldung.parsingDates; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +public class SimpleParseDate { + + public Date parseDate(String dateString, List formatStrings) { + for (String formatString : formatStrings) { + try { + return new SimpleDateFormat(formatString).parse(dateString); + } catch (ParseException e) { + } + } + return null; + } +} diff --git a/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/parsingDates/SimpleParseDateUnitTest.java b/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/parsingDates/SimpleParseDateUnitTest.java new file mode 100644 index 0000000000..d7cbb6a834 --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/parsingDates/SimpleParseDateUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.parsingDates; + +import com.baeldung.parsingDates.SimpleDateTimeFormat; +import com.baeldung.parsingDates.SimpleDateTimeFormater; +import com.baeldung.parsingDates.SimpleDateUtils; +import com.baeldung.parsingDates.SimpleParseDate; +import java.time.format.DateTimeParseException; +import java.util.Arrays; +import org.junit.*; +import static org.junit.Assert.*; +import org.joda.time.LocalDate; + +public class SimpleParseDateUnitTest { + + @Test + public void whenInvalidInput_thenGettingUnexpectedResult() { + SimpleParseDate simpleParseDate = new SimpleParseDate(); + String date = "2022-40-40"; + assertEquals("Sat May 10 00:00:00 UTC 2025", simpleParseDate.parseDate(date, Arrays.asList("MM/dd/yyyy", "dd.MM.yyyy", "yyyy-MM-dd")).toString()); + } + + @Test + public void whenInvalidDate_thenAssertThrows() { + SimpleDateTimeFormater simpleDateTimeFormater = new SimpleDateTimeFormater(); + assertEquals(java.time.LocalDate.parse("2022-12-04"), simpleDateTimeFormater.parseDate("2022-12-04")); + assertThrows(DateTimeParseException.class, () -> simpleDateTimeFormater.parseDate("2022-13-04")); + } + + @Test + public void whenDateIsCorrect_thenParseCorrect() { + SimpleDateUtils simpleDateUtils = new SimpleDateUtils(); + assertNull(simpleDateUtils.parseDate("53/10/2014")); + assertEquals("Wed Sep 10 00:00:00 UTC 2014", simpleDateUtils.parseDate("10/09/2014").toString()); + } + + @Test + public void whenDateIsCorrect_thenResultCorrect() { + SimpleDateTimeFormat simpleDateTimeFormat = new SimpleDateTimeFormat(); + assertNull(simpleDateTimeFormat.parseDate("53/10/2014")); + assertEquals(LocalDate.parse("2014-10-10"), simpleDateTimeFormat.parseDate("2014-10-10")); + } + +}