tl; dr
Duration.ofMillis(…)
.toString()
ISO 8601
là những gì, đơn giản nhất, không có cách nào vô nghĩa ngắn nhất để WRI một định dạng thời gian bắt nguồn từ mili giây
Tiêu chuẩn ISO 8601 xác định định dạng văn bản cho giá trị ngày giờ. Các định dạng này thực sự ngắn, đơn giản và vô nghĩa. Chúng hầu như có thể đọc được trên nhiều nền văn hóa khác nhau, thực tế và rõ ràng.
Kéo dài thời gian không được nối với dòng thời gian, standard format là PnYnMnDTnHnMnS
. Các P
đánh dấu sự khởi đầu, và các T
tách các năm-tháng-ngày từ giờ phút-giây. Vì vậy, một tiếng rưỡi là PT1H30M
.
java.time.Duration
Các lớp java.time bao gồm một cặp của các tầng lớp đại diện cho nhịp thời gian. Lớp Duration
là dành cho giờ-phút-giây, và Period
là dành cho năm tháng-ngày.
Duration d = Duration.ofMillis(yourMillisecondsNumberGoesHere);
Các lớp java.time sử dụng định dạng ISO 8601 theo mặc định để phân tích cú pháp và tạo chuỗi. Các lớp học Duration
và Period
sử dụng định dạng chuẩn cụ thể này. Vì vậy, chỉ cần gọi toString
.
String output = d.toString();
Bạn có thể đi theo hướng khác, phân tích các chuỗi chuẩn này.
Duration d = Duration.parse("PT1H30M");
Về java.time
Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date
, Calendar
, & SimpleDateFormat
.
Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển đến các lớp java.time.
Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.
Nơi lấy các lớp java.time?
- Java SE 8 và SE 9 và sau
- Built-in.
- Một phần của API Java chuẩn với gói được triển khai.
- Java 9 thêm một số tính năng và bản sửa lỗi nhỏ.
- Java SE 6 và SE 7
- Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport.
- Android
Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval
, YearWeek
, YearQuarter
và more.
Phải là 'System.currentTimeMillis() - thời gian;'. –