2012-03-28 32 views
0

MM/DD格式我在Java的初學者,我正在寫一個程序從中會有類似數據的多個文本文件的讀取時間:如何分析其在Java

[C417] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9900 (locked)LanId:| (11/23 10:54:09 - 11/23 10:54:44)|平均極限 (300)超過,而查驗www.google.com [74.125.224.147] 8倍

我需要從用戶輸入的日期範圍,並檢查輸入的日期中的文件位於日期範圍之間顯示與日期對應的計算機名稱。

我應該怎麼辦?

我試着用SimpledDateFormat解析日期,但它給出了一個例外:

無法解析日期(11/23 10時54分09秒 - 11/23 10時54分44秒)

這裏是我寫的代碼:

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

}} 

回答

0

這裏,這可能會給你一個心靈

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