【问题标题】:Regular Expression to extract hour minute second from a line正则表达式从一行中提取小时分钟秒
【发布时间】:2014-05-30 14:15:05
【问题描述】:

我有以下行

STATUS | webapp | 2014/05/26 15:03:13 | Starting the service...

现在我必须从行中提取小时分钟和秒..

我想出了这个代码..

 BufferedReader bin = new BufferedReader(new FileReader(wrapperFile));
 s = bin.readLine();
 final Scanner sc = new Scanner(s);
 final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
 while (sc.hasNextLine()) {
        final String line = sc.nextLine();
        final Date date = dateFormat.parse(line);
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        System.out.print(calendar.get(Calendar.HOUR));
        System.out.print(calendar.get(Calendar.MINUTE));
        System.out.print(calendar.get(Calendar.SECOND));
 }

但是抛出了解析器异常..这个问题有什么解决方法吗..??

【问题讨论】:

    标签: java regex parsing date calendar


    【解决方案1】:
    ([0-9]{2}:){2}[0-9]{2} 
    

    将匹配 HH:MM:SS

    【讨论】:

    • 已修复,使其更加冗长
    【解决方案2】:

    这里有完整的解决方案:

        String input = "STATUS | webapp | 2014/05/26 15:03:13 | Starting the service...";
        String[] splitted = input.split("\\s\\|\\s");
        String dateTime = splitted[2];
        Calendar c = Calendar.getInstance();
        try {
            Date d = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(dateTime);
            c.setTime(d);
            System.out.println("Year: " + c.get(Calendar.YEAR));
            System.out.println("Month: " + c.get(Calendar.MONTH));
            System.out.println("Day in month: " + c.get(Calendar.DAY_OF_MONTH));
            System.out.println("Hour: " + c.get(Calendar.HOUR_OF_DAY));
            System.out.println("Minute: " + c.get(Calendar.MINUTE));
            System.out.println("Second: " + c.get(Calendar.SECOND));
        }
        catch (Throwable t) {
            // test
            t.printStackTrace();
        }
    

    输出

    Year: 2014
    Month: 4 // 0-based!
    Day in month: 26
    Hour: 15
    Minute: 3
    Second: 13
    

    【讨论】:

      【解决方案3】:

      使用| 分隔符拆分输入String,然后在从split 返回的第三个rd 数组元素上使用SimpleDateFormat 和模式yyyy/MM/dd HH:mm:ss

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2015-05-13
        • 1970-01-01
        相关资源
        最近更新 更多