使用正则表达式在Java中提取日期的问题

时间:2011-12-07 22:41:10

标签: java regex

对于某个API,我会以/Date(1323312018479-0700)/格式获取日期。出于某种原因,我使用的正则表达式不会导致任何匹配。

有什么想法吗?

顺便说一句:我现在没有考虑时区。

public static Date parseApiDate(String rawDate) {
    Pattern p = Pattern.compile("([0-9]+)-([0-9]+)", Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(rawDate);

    Log.d("DATE CONVERSION: Raw", rawDate);
    if (m.matches()) {
        String utc = m.group(1);
        int milliSeconds = Integer.parseInt(utc);
        Date date = new Date(milliSeconds);

        Log.d("DATE CONVERSION: milliseconds", utc);
        Log.d("DATE CONVERSION: Converted", date.toGMTString());

        return date;
    } else {    
        return new Date(0);
    }
}

2 个答案:

答案 0 :(得分:3)

您需要m.find()而不是m.matches()。那你需要Long.parseLong()

通常,您应该使用DateFormatSimpleDateFormat)解析日期,但在这种情况下,它无法应对。模式SZ失败,可能是因为它不确定时区的开始位置(虽然应该可以这样做)

答案 1 :(得分:0)

尝试

Pattern p = Pattern.compile(".*?([0-9]+)-([0-9]+).*?", Pattern.CASE_INSENSITIVE);