Tôi cần phân tích chuỗi thời lượng, ở dạng 98d 01h 23m 45s
thành mili giây.Chuỗi thời gian phân tích thành mili giây
Tôi đã hy vọng có tương đương với SimpleDateFormat
cho thời lượng như thế này, nhưng tôi không thể tìm thấy bất cứ điều gì. Có ai khuyên bạn nên hoặc chống lại cố gắng sử dụng SDF cho mục đích này?
kế hoạch hiện tại của tôi là sử dụng regex để phù hợp với con số và làm điều gì đó như
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher("98d 01h 23m 45s");
if (m.find()) {
int days = Integer.parseInt(m.group());
}
// etc. for hours, minutes, seconds
và sau đó sử dụng TimeUnit để đặt nó tất cả cùng nhau và chuyển đổi sang mili giây.
Tôi đoán câu hỏi của tôi là, điều này có vẻ như quá mức cần thiết, có thể thực hiện dễ dàng hơn không? Rất nhiều câu hỏi về ngày tháng và dấu thời gian được bật lên nhưng điều này hơi khác một chút, có thể.
Cách tiếp cận của bạn có vẻ ổn cho đến nay. Cẩn thận với 'Integer.parseInt()' và các số 0 đứng đầu. Một cái gì đó như '... 08h ...' sẽ được hiểu là bát phân và không phân tích cú pháp. Loại bỏ bất kỳ số 0 hàng đầu nào. –
@PhilippReichart không phải là nó an toàn theo cách tôi đang sử dụng nó ở trên, kể từ 'Integer.parseInt (" 08 ")' trả về '8'? – Craigy
Có lẽ suy nghĩ của bạn về không gian hàng đầu. 'System.out.println (" Integer.parseInt ("009")); 'prints" 9 "trên máy tính của tôi.' H' không được chuyển tới 'parseInt', tuy nhiên, – Gene