Parse dates with multiple formats (#13348)
Code examples for "Parsing Date Strings with Varying Formats"
This commit is contained in:
parent
b86f875dbe
commit
5c2126b626
@ -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<String> 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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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<String> formatStrings) {
|
||||
for (String formatString : formatStrings) {
|
||||
try {
|
||||
return new SimpleDateFormat(formatString).parse(dateString);
|
||||
} catch (ParseException e) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -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"));
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user