tl; dr
Bạn yêu cầu tỷ lệ một giây của thời gian hiện tại là một số mili giây ( không tính từ kỷ nguyên).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- Lấy giây thứ hai tính bằng nano giây (tỷ).
- Chia cho một nghìn để cắt ngắn đến mili giây (hàng ngàn).
Xem mã này chạy trực tiếp tại IdeOne.com .
Sử dụng java.time
Cách hiện đại là với các lớp java.time.
Ghi lại khoảnh khắc hiện tại trong UTC.
Instant.now()
Sử dụng Instant.get
phương pháp để thẩm vấn giá trị của a TemporalField
. Trong trường hợp của chúng tôi, TemporalField
chúng tôi muốn là ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Hoặc tự làm toán.
Nhiều khả năng bạn đang yêu cầu điều này cho một múi giờ cụ thể. Phần của một giây có thể giống như với Instant
nhưng có quá nhiều dị thường với các múi giờ, tôi ngần ngại đưa ra giả định đó.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Thắc mắc cho phân đoạn thứ hai. Câu hỏi yêu cầu mili giây , nhưng các lớp java.time sử dụng độ phân giải nano giây tốt hơn . Điều đó có nghĩa là số lượng nano giây sẽ nằm trong khoảng từ 0 đến 999.999.999.
long nanosFractionOfSecond = zdt.getNano();
Nếu bạn thực sự muốn một phần nghìn giây, hãy cắt bớt dữ liệu tốt hơn bằng cách chia cho một triệu. Ví dụ: nửa giây là 500.000.000 nano giây và cũng là 500 mili giây.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
Giới thiệu về java.time
Các java.time khung được xây dựng vào Java 8 và sau đó. 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
.
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.
Để tìm hiểu thêm, 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 .
Nơi để có được các lớp java.time?
- Java SE 8 và SE 9 trở lên
- Được xây dựng trong.
- Một phần của API Java tiêu chuẩn với việc triển khai đi kèm.
- Java 9 thêm một số tính năng nhỏ và sửa lỗi.
- Java SE 6 và SE 7
- Phần lớn chức năng java.time được chuyển ngược lại sang Java 6 & 7 trong ThreeTen-Backport .
- Android
Các ThreeTen-Extra dự án mở rộng 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 các bổ sung có thể trong tương lai cho java.time. Bạn có thể tìm thấy một số các lớp học hữu ích ở đây chẳng hạn như Interval
, YearWeek
, YearQuarter
, và nhiều hơn nữa .
[0, 999]
, đúng không? @thinksteep đọc câu cuối cùng.