How to check if a string is date?

前端 未结 5 2092
渐次进展
渐次进展 2020-12-17 19:39

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 n

相关标签:
5条回答
  • 2020-12-17 19:49

    There are two possible solutions:

    • Use a SimpleDateFormat and try to convert the String to Date. If no ParseException is thrown the format is correct.
    • Use a regular expression to parse the String
    0 讨论(0)
  • 2020-12-17 19:49

    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... 
    }
    
    0 讨论(0)
  • 2020-12-17 19:54

    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.

    0 讨论(0)
  • 2020-12-17 20:04

    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))
    
    0 讨论(0)
  • 2020-12-17 20:14

    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"));
        }
    }
    
    0 讨论(0)
提交回复
热议问题