对于某个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);
}
}
答案 0 :(得分:3)
您需要m.find()
而不是m.matches()
。那你需要Long.parseLong()
通常,您应该使用DateFormat
(SimpleDateFormat
)解析日期,但在这种情况下,它无法应对。模式SZ
失败,可能是因为它不确定时区的开始位置(虽然应该可以这样做)
答案 1 :(得分:0)
尝试
Pattern p = Pattern.compile(".*?([0-9]+)-([0-9]+).*?", Pattern.CASE_INSENSITIVE);