简体   繁体   中英

How to parse date having MM/dd format in java

I'm a beginner in Java and I'm writing a program to read from multiple text files which have data that looks like:

[C417] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9900 (locked) LanId: | (11/23 10:54:09 - 11/23 10:54:44) | Average limit (300) exceeded while pinging www.google.com [74.125.224.147] 8x

I need to enter date range from the user and check if the entered date lies between the date range in the files and display the computer name corresponding to the dates.

How should I go about it?

I tried parsing the date with SimpledDateFormat but it gives an exception:

Unparsable date (11/23 10:54:09 - 11/23 10:54:44)

Here is the code I wrote:

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.Scanner;
import java.util.*;
import java.text.*;

public class test {
  public static void main(String args[]) throws ParseException {
    try {
   Scanner input1=new Scanner(System.in);

   Scanner input2=new Scanner(System.in);
   System.out.println("Enter start date");
    String userDate1=input1.nextLine();
    System.out.println("Enter end date");
     String userDate2=input2.nextLine();
      //DateFormat df = new SimpleDateFormat ("yyyy-MM-dd");
DateFormat df = new SimpleDateFormat ("MM/dd");
      Date d1=df.parse(userDate1);
      Date d2=df.parse(userDate2);

      ZipFile zf=new ZipFile("C:\\Users\\Engineeir\\Desktop\\QoS_logs.zip");
      Enumeration entries=zf.entries();

      BufferedReader input=new BufferedReader(new InputStreamReader(
          System.in));
      while (entries.hasMoreElements()) {
        ZipEntry ze=(ZipEntry) entries.nextElement();

     BufferedReader br=new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
        String line;
        while ((line=br.readLine())!=null) {
              String[] st=line.split("\\|",-1);

              if(st.length>1)
             {
            String name=st[0];
            String dates=st[1];
DateFormat df1 = new SimpleDateFormat (" '('MM/dd '-' ')' ");
//String d3 = (Date)df1.parse(dates);
//SimpleDateFormat newFormat = new SimpleDateFormat("MM/dd");
//Date d4 = newFormat.format(d3);
  //Date theDate = dateFormat.parse(d4); 

            Date d3=df1.parse(dates);

       if((d1.compareTo(d3)*d3.compareTo(d2))>0){
           System.out.println(name); }
else{
    System.out.println("Out of Range..Not found");
     }       
 }
           // br.close();



 }  } }catch (IOException e) {
      e.printStackTrace();
    }

}}
    String s = "11/23 10:54:09 - 11/23 10:54:44"; 
    String[] parts = s.split("-");
    DateFormat f = new SimpleDateFormat("MM/dd hh:mm:ss");
    Date d1 = f.parse(parts[0].trim());
    Date d2 = f.parse(parts[1].trim());

Here, this might give you a mind

    public static String dates = "11/23 10:54:09 - 11/23 10:54:44";
        public static Pattern pattern = Pattern.compile("\\d\\d\\/\\d\\d \\d\\d:\\d\\d:\\d\\d");

        public boolean isDateOk() throws Exception {
            Matcher m = pattern.matcher(dates);
            SimpleDateFormat format = new SimpleDateFormat("MM/dd HH:mm:ss");
            Date startDate = null;
            Date endDate = null;
            Date ourDate = new Date();
            if(m.find()){
                startDate = format.parse(m.group());
            } else{
            throw new Exception("msg");
            }
            if(m.find()){
                endDate = format.parse(m.group());
            }else{
            throw new Exception("msg");
            }
            if (startDate!=null && endDate != null) {
                if (ourDate.after(startDate) && ourDate.before(endDate)){
                    return true;
                }
                return false;
            }


            return false;   
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM