How to check if a string is date?

java.time

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.


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"));
    }
}

Tags:

Java

Regex