2012-08-25 80 views
13

Tôi muốn nhận thời gian bắt đầu và thời gian hoạt động của JVM. Cho đến nay tôi đã thực hiện điều này:Làm thế nào để chuyển đổi mili giây thành giờ và ngày?

public long getjvmstarttime(){ 
    final long uptime = ManagementFactory.getRuntimeMXBean().getStartTime(); 
    return uptime; 
} 

public long getjvmuptime(){ 
    final long uptime = ManagementFactory.getRuntimeMXBean().getUptime(); 
    return uptime; 
} 

Nhưng tôi nhận được thời gian bằng mili giây. Làm thế nào tôi có thể chuyển đổi thời gian trong ngày và giờ. Tôi muốn hiển thị mili giây theo định dạng này: 3 ngày, 8 giờ, 32 phút. Có phương pháp Java nội bộ amy có thể chuyển đổi mili giây không?

Trả lời

36

Mã dưới đây không toán bạn cần và xây dựng chuỗi kết quả:

private static final int SECOND = 1000; 
private static final int MINUTE = 60 * SECOND; 
private static final int HOUR = 60 * MINUTE; 
private static final int DAY = 24 * HOUR; 

// TODO: this is the value in ms 
long ms = 10304004543l; 
StringBuffer text = new StringBuffer(""); 
if (ms > DAY) { 
    text.append(ms/DAY).append(" days "); 
    ms %= DAY; 
} 
if (ms > HOUR) { 
    text.append(ms/HOUR).append(" hours "); 
    ms %= HOUR; 
} 
if (ms > MINUTE) { 
    text.append(ms/MINUTE).append(" minutes "); 
    ms %= MINUTE; 
} 
if (ms > SECOND) { 
    text.append(ms/SECOND).append(" seconds "); 
    ms %= SECOND; 
} 
text.append(ms + " ms"); 
System.out.println(text.toString()); 
+0

Giải pháp quyến rũ –

+1

Câu lệnh if của bạn nên kiểm tra nếu ms lớn hơn hoặc bằng DAY/MINUTE/HOUR/SECOND. Ví dụ: nếu ms = 1000, nó sẽ hiển thị là 0 giây. – MrK

44

Khi bạn có thời gian bằng mili giây, bạn có thể sử dụng số TimeUnit enum để chuyển đổi nó sang các đơn vị thời gian khác. Chuyển đổi thành ngày sẽ chỉ yêu cầu một cuộc gọi.

long days = TimeUnit.MILLISECONDS.toDays(milliseconds); 

Nhận giờ sẽ liên quan đến một cuộc gọi tương tự khác trong tổng số giờ, sau đó tính thời gian còn lại sau ngày được trừ.

+0

nhờ anh chàng, bạn là ông chủ .. vì vậy tốt hơn nhiều so với câu trả lời chấp nhận –

+0

tốt nhất câu trả lời, vẫn là phương pháp trên và khá nhiều thứ khác như .toHours (millis) trả về một giá trị dài, tại sao? – Matteo

+0

@VeenarM Các giải pháp này được cung cấp trong cùng một ngày và TimeUnit đã có từ Java 5. (DAYS đã được thêm vào nó với Java 7, mà có thể là một năm trước các bài đăng này.) –

2

Hãy xem Pretty Time. Đó là thư viện để tạo chuỗi thời gian có thể xáo trộn của con người từ dấu thời gian như mili giây.

Các vấn đề liên quan