如何检查值是否为日期类型?

问题描述 投票:0回答:7

我有一个项目需求。 .txt 中的值如下 -

 02/01/2017 00:00:00

现在我需要一些规则来检查数据文件中的这个值是否是日期类型。我怎样才能做到这一点?谢谢。我是 Java 新手,所以非常感谢任何帮助。谢谢

java date datetime-parsing
7个回答
2
投票

java.time

这是 Java 8 解决方案(当您使用 ThreeTen Backport 时,它也可以在 Java 6 和 7 中工作)。

private static final DateTimeFormatter DATE_TIME_FORMAT 
        = DateTimeFormatter.ofPattern("MM/dd/uuuu HH:mm:ss")
                .withResolverStyle(ResolverStyle.STRICT);

public static boolean hasTypeDate(String stringFromTxt) {
    try {
        DATE_TIME_FORMAT.parse(stringFromTxt);
        return true;
    } catch (DateTimeParseException dtpe) {
        return false;
    }
}

远离

SimpleDateFormat
以获取新代码。它已经过时了,现在已经过时了一段时间了。

如果您希望先显示月份中的某一天(如果

02/01/2017
表示 1 月 2 日),则需要使用格式模式
dd/MM/uuuu HH:mm:ss

如果您需要知道

.txt
中的日期和时间,请使用:

        LocalDateTime dateTime = LocalDateTime.parse(stringFromTxt, DATE_TIME_FORMAT);

链接:ThreeTen 向后移植:

java.time
Java 6 和 7 的类


1
投票

尝试解析它的最新情况。如果它抛出

ParseException
那么它不是一个日期。

String dateString = "02/01/2017 00:00:00";
DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); 
Date date;
try {
    date = df.parse(dateString);
} catch (ParseException e) {
    e.printStackTrace();
}

1
投票

如果你只想要有效天数,请使用非宽松解析:

String dateString = "02/28/2017 00:00:00";

DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
df.setLenient(false);
Date date;
try {
    date = df.parse(dateString);
    System.out.println(date);
} catch (ParseException e) {
    e.printStackTrace();
}

对于 2 月 31 日等不存在的日子,这会引发异常


1
投票
  1. 方法1

    Date dt = new Date(); //this should your Dynamic object
    
    if (dt.getClass().equals(new Date().getClass())) 
    {
      //if its date object
    }
    
  2. 方法2

     if(dt instanceof  Date){
       //if its date object
     }
    

0
投票

用它来检查日期

String sDate1="31/12/1998 00:00:00";  
try{
  Date date1=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse(sDate1);  `
} 
catch(Exception e)
{
  //Not a date..
} 

0
投票

您可以使用正则表达式来检查格式

public boolean isDate(String s){
String pattern= "([0-9]{2})/([0-9]{2})/([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})";
return s.matches(pattern);}

-1
投票
public static boolean isValidDate(String inDate) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    dateFormat.setLenient(false);
    try {
      dateFormat.parse(inDate.trim());
    } catch (ParseException pe) {
      return false;
    }
    return true;
  }

public static void main(String[] args) {
 String file = "/path/to/your/file.txt";

try {

    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    String line;
    while ((line = br.readLine()) != null) {
        // do something with line
    }
    br.close();
   isValidDate(line));
   //do what you want :)
  }
© www.soinside.com 2019 - 2024. All rights reserved.