tl; dr
Làm thế nào để chuyển đổi chuỗi trên để unix timestamp?
Instant.parse("2014-09-01T19:22:43.000Z")
.getEpochSecond()
java.time
Lớp java.time.Instant
có thể phân tích chuỗi đầu vào của bạn với định dạng chuẩn của nó theo tiêu chuẩn ISO 8601. Không cần chỉ định mẫu định dạng.
Instant instant = Instant.parse("2014-09-01T19:22:43.000Z");
Để có được một số mili giây kể từ khi kỷ nguyên của Năm 1970:
long millisecondsSinceUnixEpoch = instant.toEpochMilli() ;
Đối với toàn bộ giây kể từ kỷ nguyên của 1970-01-01T00: 00: 00Z:
long secondsSinceUnixEpoch = instant.getEpochSecond() ;
Be nhận biết mất dữ liệu có thể khi chuyển sang mili giây hoặc toàn bộ giây. Các lớp java.time có độ phân giải nano giây, vì vậy bất kỳ micro giây hoặc nano giây nào hiện diện trong giá trị sẽ bị cắt ngắn.
Joda thời gian
Cập nhật Dự án Joda-Thời gian bây giờ là trong chế độ bảo trì. Nhóm này khuyên bạn nên di trú sang các lớp java.time.
Thư viện Joda-Time giúp công việc này dễ dàng hơn. Chuỗi tuân thủ ISO 8601 của bạn có thể được cấp trực tiếp cho nhà xây dựng Joda-Time. Việc xây dựng trong phân tích cú pháp dự đoán theo tiêu chuẩn ISO 8601.
DateTime dateTime = new DateTime("2014-09-01T19:22:43.000Z") ;
Unix Timestamp
Ý anh là gì bởi một dấu thời gian Unix? Một số người có nghĩa là tổng số giây kể từ giây phút đầu tiên của năm 1970 UTC (Unix epoch) trong khi bỏ qua giây nhảy vọt (xem Unix Time). Một số người có nghĩa là một số mili giây hoặc độ phân giải khác.
Lưu ý việc sử dụng long
nguyên thủy hơn là phổ biến hơn int
.
Trong mili giây, hãy gọi getMillis()
.
long millisecondsSinceUnixEpoch = dateTime.getMillis();
Trong toàn bộ giây, chia cho 1.000. Xem xét nếu bạn muốn làm tròn hoặc cắt ngắn các số thập phân.
Thông thường tôi khuyên bạn nên chuyển đối tượng DateTimeZone cùng với chuỗi của bạn tới hàm tạo DateTime. Nhưng không cần thiết nếu tất cả các bạn muốn là một số kể từ thời đại.
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?
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.
FYI, các lớp ngày giờ phiền hà cũ như ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html) , ['java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html) và' java.text.SimpleDateFormat' hiện là [legacy] (https://en.wikipedia.org/wiki/Legacy_system), được thay thế bởi [java.time] (https://docs.oracle.com/javase/9/docs/api/ Các lớp java/time/package-summary.html) được xây dựng trong Java 8 & Java 9. Xem [Hướng dẫn của Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –