Как разобрать дату, имеющую формат MM / dd в java - PullRequest
0 голосов
/ 28 марта 2012

Я новичок в Java, и я пишу программу для чтения из нескольких текстовых файлов, данные которых выглядят следующим образом:

[C417] ComputerName: идентификатор пользователя KCUTSHALL-ПК: GO kcutshall Station 9900 (заблокирован) LanId: | (23.11 10:54:09 - 23.11 10:54:44) | Средний лимит (300) превышено при пинге www.google.com [74.125.224.147] 8x

Мне нужно ввести диапазон дат от пользователя и проверить, находится ли введенная дата между диапазоном дат в файлах, и отобразить имя компьютера, соответствующее датам.

Как мне это сделать?

Я попытался разобрать дату с SimpledDateFormat, но это дает исключение:

Неоплачиваемая дата (23.11 10:54:09 - 23.11 10:54:44)

Вот код, который я написал:

импорт 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();
    }

}}

Ответы [ 2 ]

1 голос
/ 28 марта 2012
    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());
0 голосов
/ 28 марта 2012

Здесь это может дать вам разум

    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;   
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...