tl; dr
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java 9 trở lên
Trong Java 9 trở lên, hãy tạo Duration
và gọi các to…Part
phương thức. Trong trường hợp này: toMinutesPart
và toSecondsPart
.
Ghi lại điểm bắt đầu và điểm dừng của đồng hồ bấm giờ của bạn.
Instant start = Instant.now();
…
Instant stop = Instant.now();
Biểu diễn thời gian đã trôi qua trong một Duration
đối tượng.
Duration d = Duration.between( start , stop );
Thẩm vấn từng phần, phút và giây.
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
Bạn cũng có thể muốn xem liệu đồng hồ bấm giờ của mình có chạy lâu như mong đợi hay không.
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
Trong Java 8, Duration
lớp thiếu to…Part
các phương thức. Bạn sẽ cần phải làm toán như được hiển thị trong các câu trả lời khác.
long entireDurationAsSeconds = d.getSeconds();
Hoặc để Duration
làm toán học.
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
Xem mã trực tiếp trong IdeOne.com .
Khoảng thời gian: 2016-12-18T08: 39: 34.099Z / 2016-12-18T08: 41: 49.099Z
d.toString (): PT2M15S
d.getSeconds (): 135
Đã trôi qua: 2M 15S
Độ phân giải
FYI, độ phân giải của các now
phương thức đã thay đổi giữa Java 8 và Java 9. Xem Câu hỏi này .
- Java 9 ghi lại khoảnh khắc với độ phân giải tốt như nano giây. Độ phân giải phụ thuộc vào khả năng của phần cứng máy tính của bạn. Tôi thấy micro giây (sáu chữ số của phần thập phân) trên MacBook Pro Retina với macOS Sierra.
- Java 8 ghi lại khoảnh khắc chỉ lên đến mili giây. Việc triển khai
Clock
được giới hạn ở độ phân giải mili giây. Vì vậy, bạn có thể lưu trữ các giá trị bằng nano giây nhưng chỉ ghi lại chúng trong mili giây.
Giới thiệu về java.time
Khung java.time được tích hợp sẵn trong Java 8 trở lên. Những lớp học thay thế cái cũ phiền hà di sản lớp học ngày thời gian như java.util.Date
, Calendar
, & SimpleDateFormat
.
Để tìm hiểu thêm, hãy xem Hướng dẫn Oracle . 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 .
Các Joda thời gian dự án, bây giờ trong chế độ bảo trì , khuyên chuyển đổi sang các java.time lớp.
Bạn có thể trao đổi các đối tượng java.time trực tiếp với cơ sở dữ liệu của mình. Sử dụng trình điều khiển JDBC tương thích với JDBC 4.2 trở lên. Không cần chuỗi, không cần java.sql.*
lớp.
Lấy các lớp java.time ở đâu?