Reputation: 397
I am having string like
"11-04-2015 22:01:13:053" or "32476347656435"
How can I check if string is Date?
Checking String if it is numeric using regex
String regex = "[0-9]+";
Upvotes: 20
Views: 62929
Reputation: 361
The best solution is to actually try to parse it to a date with DateTime.TryParse()
.
String d = "11-04-2015 22:01:13:053";
DateTime dt = new DateTime();
if (DateTime.TryParse(d, out dt)) {
/// yes, it's a date, do something here...
} else {
// no, it's not a date, do something else here...
}
Upvotes: -1
Reputation: 1
You can use Apache Commons Validator. It provides validation framework for validating date, time, numbers, currency, IP address, email, and URL.
Maven dependency:
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.6</version>
</dependency>
Example:
assertTrue(GenericValidator.isDate("2019-02-28", "yyyy-MM-dd", true))
Upvotes: 0
Reputation: 86232
It’s about time someone provides the modern answer. The SimpleDateFormat
class mentioned in a couple of the other answers is notoriously troublesome and fortunately now long outdated. Instead the modern solution uses java.time, the modern Java date and time API.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss:SSS");
String stringToTest = "11-04-2015 22:01:13:053";
try {
LocalDateTime dateTime = LocalDateTime.parse(stringToTest, formatter);
System.out.println("The string is a date and time: " + dateTime);
} catch (DateTimeParseException dtpe) {
System.out.println("The string is not a date and time: " + dtpe.getMessage());
}
Output from this snippet is:
The string is a date and time: 2015-04-11T22:01:13.053
Suppose that instead the string was defined as:
String stringToTest = "32476347656435";
Now the output is:
The string is not a date and time: Text '32476347656435' could not be parsed at index 2
Link: Oracle tutorial: Date Time explaining how to use java.time.
Upvotes: 7
Reputation: 556
Other person are also correct
This is your answer
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class date {
public static boolean isValidDate(String inDate) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:ms");
dateFormat.setLenient(false);
try {
dateFormat.parse(inDate.trim());
} catch (ParseException pe) {
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isValidDate("20-01-2014"));
System.out.println(isValidDate("11-04-2015 22:01:33:023"));
System.out.println(isValidDate("32476347656435"));
}
}
Upvotes: 35
Reputation: 26926
There are two possible solutions:
SimpleDateFormat
and try to convert the String
to Date
. If no ParseException
is thrown the format is correct.String
Upvotes: 1