如何检查字符串是否为日期?

Nik*_*iks 6 java regex

我有字符串

"11-04-2015 22:01:13:053" or "32476347656435"
Run Code Online (Sandbox Code Playgroud)

如何检查字符串是否为日期?
使用正则表达式检查字符串是否为数字

String regex = "[0-9]+";
Run Code Online (Sandbox Code Playgroud)

小智 16

其他人也是对的

这是你的答案

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"));
    }
}
Run Code Online (Sandbox Code Playgroud)


Ole*_*.V. 5

java.time

\n\n

是时候有人提供现代答案了。SimpleDateFormat其他几个答案中提到的课程是出了名的麻烦,幸运的是现在已经过时了。相反,现代解决方案使用 java.time,即现代 Java 日期和时间 API。

\n\n
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss:SSS");\n\n    String stringToTest = "11-04-2015 22:01:13:053";\n\n    try {\n        LocalDateTime dateTime = LocalDateTime.parse(stringToTest, formatter);\n        System.out.println("The string is a date and time: " + dateTime);\n    } catch (DateTimeParseException dtpe) {\n        System.out.println("The string is not a date and time: " + dtpe.getMessage());\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

该片段的输出是:

\n\n
\n

该字符串是日期和时间:2015-04-11T22:01:13.053

\n
\n\n

假设字符串被定义为:

\n\n
    String stringToTest = "32476347656435";\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在输出是:

\n\n
\n

该字符串不是日期和时间:无法在索引 2 处解析文本“32476347656435”

\n
\n\n

链接: Oracle 教程:日期时间解释如何使用 java.time。

\n