In this example we will show how to validate time in 24 hours format with regular expression.
Source Code
package com.beginner.examples;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidateTime {
public static void main(String[] args) {
System.out.println(validateTime("2016-5-2 08:02:02"));
System.out.println(validateTime("2016-02-29 08:02:02"));
System.out.println(validateTime("2015-02-29 08:02:02"));
System.out.println(validateTime("2016-02-02 082:02"));
}
public static boolean validateTime(String timeStr) {
String format = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) " + "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
pattern = Pattern.compile("(d{4})-(d+)-(d+).*");
matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
int y = Integer.valueOf(matcher.group(1));
int m = Integer.valueOf(matcher.group(2));
int d = Integer.valueOf(matcher.group(3));
if (d > 28) {
Calendar c = Calendar.getInstance();
c.set(y, m-1, 1);
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
return (lastDay >= d);
}
}
return true;
}
return false;
}
}
Output:
true
true
false
false
References
Imported packages in Java documentation: