简体   繁体   English

如何在Java中解析具有MM / dd格式的日期

[英]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: 我是Java的初学者,我正在编写一个程序以读取多个文本文件,这些文件的数据如下所示:

[C417] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9900 (locked) LanId: | [C417] ComputerName:KCUTSHALL-PC用户ID:GO kcutshall Station 9900(已锁定)LanId:| (11/23 10:54:09 - 11/23 10:54:44) | (11/23 10:54:09-11/23 10:54:44)| Average limit (300) exceeded while pinging www.google.com [74.125.224.147] 8x ping www.google.com [74.125.224.147]时,超出了平均限制(300)

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: 我尝试使用SimpledDateFormat解析日期,但它给出了一个例外:

Unparsable date (11/23 10:54:09 - 11/23 10:54:44) 无法解析的日期(11/23 10:54:09-11/23 10:54:44)

Here is the code I wrote: 这是我写的代码:

import java.io.BufferedReader; 导入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;   
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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