tl; dr
Instant.parse("2014-10-23T00:35:14.800Z")
.toEpochMilli()
One-Liner Trong java.time
Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp mới này thay thế các lớp ngày tháng cũ đi kèm với các phiên bản Java sớm nhất như java.util.Date/.Calendar. Xem Tutorial. Các lớp java.time cũng thay thế thư viện thành công rất cao Joda-Time, được xây dựng bởi một số người giống nhau kể cả được dẫn dắt bởi cùng một Stephen Colbourne.
An Instant
là thời điểm trên dòng thời gian ở UTC với độ phân giải nanoseconds. Bạn có thể ask it for a count of milliseconds từ số epoch (khoảnh khắc đầu tiên của năm 1970 ở số UTC). Nhưng hãy nhớ rằng Instant
có thể có dữ liệu bổ sung, nano giây trở nên mịn hơn mili giây. Vì vậy, bạn có thể bị mất dữ liệu trong phần nhỏ đó của một phần nhỏ của giây.
Lớp java.time sử dụng định dạng chuẩn ISO 8601 khi phân tích cú pháp/tạo chuỗi. Không cần chỉ định mẫu định dạng. Lớp Instant
có thể directly parse một chuỗi.
Instant.parse("2014-10-23T00:35:14.800Z")
Bạn có thể chuyển đổi đó để một số mili giây kể từ khi kỷ nguyên của giây phút đầu tiên của năm 1970 tại UTC bằng cách gọi toEpochMilli
Hãy nhận biết của mất mát dữ liệu có thể là lớp Instant
thể giữ nano giây. Vì vậy, việc giải nén mili giây sẽ cắt ngắn bất kỳ micro giây hoặc nano giây nào trong bất kỳ giây phân số nào. Chuỗi ví dụ của bạn chỉ có ba chữ số trong phân số thứ hai, vì vậy đó chỉ là mili giây. Nhưng sáu hoặc chín chữ số thập phân sẽ bị cắt bớt thành ba khi được chuyển đổi thành số mili giây.
long millisFromEpoch = Instant.parse("2014-10-23T00:35:14.800Z").toEpochMilli();
Để có thời gian trôi qua về số giờ-phút-giây, hãy sử dụng lớp Duration
. Hãy cho phương thức between
của mình một đôi thời gian.
Duration duration = Duration.between(Instant.parse("2014-10-23T00:35:14.800Z") , Instant.now());
One-Liner Trong Joda thời gian
UPDATE: Dự án Joda thời gian là trong chế độ bảo trì, với đội ngũ tư vấn chuyển đổi sang các lớp java.time.
Với thư viện Joda-Time 2.5:
long millisSinceEpoch = new DateTime("2014-10-23T00:35:14.800Z").getMillis();
Joda thời gian phân tích và tạo ra chuỗi ISO 8601 theo mặc định. Joda-Time hoạt động trong Android. Các lớp java.util.Date/.Calendar nổi tiếng phiền hà, khó hiểu và thiếu sót. Tránh chúng.
Xem [Thời gian Joda] (http://joda-time.sourceforge.net/cal_iso.html). –
Nếu bạn sử dụng Java 8, bạn có thể tìm thấy [thảo luận này] (http://programmers.stackexchange.com/questions/225343/why-are-the-java-8-java-time-classes-missing-a-getmillis -method) thú vị. –
Vui lòng cho tôi biết lý do bạn đã bỏ phiếu này xuống. – David