2012-03-28 3 views
0

ich ein Anfänger in Java, und ich bin ein Programm schreiben, aus mehreren Textdateien zu lesen, die Daten haben, die wie folgt aussehen:Wie analysieren Datum in Java mit MM/dd Format

[C417] Computername: KCUTSHALL-PC Benutzer-ID: GO kcuthall Station 9900 (unlocked) LanId: | (11/23 10:54:09 - 11/23 10:54:44) | Durchschnittliche Grenze (300) überschritt, während Pingen www.google.com [74.125.224.147] 8x

Ich brauche Datumsbereich vom Benutzer eingeben und prüfen, ob das eingegebene Datum in den Dateien zwischen dem Datumsbereich liegt und Zeigen Sie den Computernamen entsprechend den Daten an.

Wie soll ich vorgehen?

Ich habe versucht, das Datum mit SimpledDateFormat Parsen aber es gibt eine Ausnahme:

nicht geparst Datum (11/23 10.54.09 - 11/23 10:54:44)

Hier ist der Code, den ich schrieb:

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

}} 

Antwort

0

Hier könnte dies Ihnen einen Geist

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