Validating date String in Java can be tricky as you may not know which date format you are dealing with, so the best way can be to create a list of date formats that you support and iterate through it.
List of Some Valid Date Formats:
- yyyy-MM-dd
- MM/dd/yyyy
- dd-MM-yyyy
- yyyy/MM/dd
- MMMM dd, yyyy
- dd MMM yyyy
- yyyy-MM-dd HH:mm:ss
- MM/dd/yyyy HH:mm:ss
- dd-MM-yyyy HH:mm:ss
- yyyy/MM/dd HH:mm:ss
- MMMM dd, yyyy HH:mm:ss
- dd MMM yyyy HH:mm:ss
- EEE, d MMM yyyy HH:mm:ss Z
- yyyy-MM-dd'T'HH:mm:ss
- MM/dd/yyyy'T'HH:mm:ss
- dd-MM-yyyy'T'HH:mm:ss
- yyyy/MM/dd'T'HH:mm:ss
- MMMM dd, yyyy'T'HH:mm:ss
- dd MMM yyyy'T'HH:mm:ss
- EEE, d MMM yyyy'T'HH:mm:ss Z
- yyyy-MM-dd'T'HH:mm:ss.SSS
- MM/dd/yyyy'T'HH:mm:ss.SSS
- dd-MM-yyyy'T'HH:mm:ss.SSS
- yyyy/MM/dd'T'HH:mm:ss.SSS
- MMMM dd, yyyy'T'HH:mm:ss.SSS
- dd MMM yyyy'T'HH:mm:ss.SSS
- EEE, d MMM yyyy'T'HH:mm:ss.SSS Z
- yyyy-MM-dd'T'HH:mm:ss.SSSSSS
- MM/dd/yyyy'T'HH:mm:ss.SSSSSS
- dd-MM-yyyy'T'HH:mm:ss.SSSSSS
Example: Java 7 or before
package org.code2care.examples;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ValidateDateExample {
public static void main(String[] args) {
String dateStr = "2023-12-25";
//Add your valid date format list here
String[] validFormats = {
"yyyy-MM-dd",
"MM/dd/yyyy",
"dd-MM-yyyy",
"yyyy/MM/dd",
"MMMM dd, yyyy",
"dd MMM yyyy"
};
if (isValidDateFormat(dateStr, validFormats)) {
System.out.println("Date format is valid.");
} else {
System.out.println("Date format is not valid.");
}
}
public static boolean isValidDateFormat(String dateStr, String[] validFormats) {
for (String format : validFormats) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(false);
try {
Date date = sdf.parse(dateStr);
if (date != null) {
return true;
}
} catch (ParseException e) {
// Parsing failed, try the next format
}
}
// None of the formats resulted in a valid date
return false;
}
}
Example: Java 8 or above
package org.code2care.examples;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Arrays;
public class ValidateDateFormat {
public static void main(String[] args) {
String dateStr = "2023-July-25";
String[] validFormats = {
"yyyy-MM-dd",
"MM/dd/yyyy",
"dd-MM-yyyy",
"yyyy/MM/dd",
"MMMM dd, yyyy",
"dd MMM yyyy",
"yyyy-MMMM-dd"
};
boolean isValid = Arrays.stream(validFormats)
.anyMatch(format -> isValidDateFormat(dateStr, format));
if (isValid) {
System.out.println("Date format is valid.");
} else {
System.out.println("Date format is not valid.");
}
}
public static boolean isValidDateFormat(String dateStr, String format) {
try {
DateTimeFormatter.ofPattern(format).parse(dateStr);
return true;
} catch (DateTimeParseException e) {
return false;
}
}
}
Output:
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!