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

时间:2015-11-28 06:17:33

标签: java regex

我有像

这样的字符串
"11-04-2015 22:01:13:053" or "32476347656435"

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

String regex = "[0-9]+";

5 个答案:

答案 0 :(得分:14)

其他人也是正确的

这是你的答案

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

答案 1 :(得分:2)

有两种可能的解决方案:

答案 2 :(得分:1)

最好的解决方案是实际尝试使用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... 
            }

答案 3 :(得分:0)

java.time

现在该有人提供现代答案了。另外两个答案中提到的SimpleDateFormat类非常麻烦,而且幸运的是现在已经过时了。相反,现代解决方案使用现代Java日期和时间API java.time。

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

此代码段的输出为:

  

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

假设该字符串定义为:

    String stringToTest = "32476347656435";

现在输出为:

  

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

链接: Oracle tutorial: Date Time解释了如何使用java.time。

答案 4 :(得分:0)

您可以使用Apache Commons Validator。它提供了用于验证日期,时间,数字,货币,IP地址,电子邮件和URL的验证框架。

Maven依赖项:

<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.6</version>
</dependency>

示例:

assertTrue(GenericValidator.isDate("2019-02-28", "yyyy-MM-dd", true))