2012-03-28 38 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());