Java - How to check if a value is of type Date

后端 未结 6 581
耶瑟儿~
耶瑟儿~ 2021-01-29 09:22

I have a project requirement. There are values in a .txt as -

 02/01/2017 00:00:00

Now I need to have some rules to check if this value in the

相关标签:
6条回答
  • 2021-01-29 10:10

    Try to parse it to date. If it throws ParseException then it is not a date.

    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();
    }
    
    0 讨论(0)
  • 2021-01-29 10:12

    You can use regular expressions to check the format

    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);}
    
    0 讨论(0)
  • 2021-01-29 10:12

    Here’s the Java 8 solution (it can be made to work in Java 6 and 7 too when you use the ThreeTen Backport).

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

    Stay away from SimpleDateFormat for new code. It has had its time, it’s been outdated for a while now.

    If you intended the day of month first (if 02/01/2017 means January 2nd), you need the format pattern dd/MM/uuuu HH:mm:ss instead.

    If you need to know which date and time was in the .txt, use:

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

    Link: ThreeTen Backport: java.time classes for Java 6 and 7.

    0 讨论(0)
  • 2021-01-29 10:15

    Use this to check date

    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 讨论(0)
  • 2021-01-29 10:18

    If you just want valid days, use non-lenient parsing:

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

    This will throw an exception for non-existing days like the 31st of February

    0 讨论(0)
  • 2021-01-29 10:26
    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 :)
      }
    
    0 讨论(0)
提交回复
热议问题