Làm cách nào để chuyển đổi org.joda.time.LocalDateTime
thành dấu thời gian Unix, do thời gian địa phương ở múi giờ UTC?Chuyển đổi Joda LocalDateTime thành dấu thời gian Unix
Ví dụ:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Làm cách nào để chuyển đổi org.joda.time.LocalDateTime
thành dấu thời gian Unix, do thời gian địa phương ở múi giờ UTC?Chuyển đổi Joda LocalDateTime thành dấu thời gian Unix
Ví dụ:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Cho rằng bạn muốn dấu thời gian Unix "sự trao LocalDateTime
, trong UTC" cách tiếp cận đơn giản nhất chỉ là để chuyển nó sang một DateTime
bằng cách xác định DateTimeZone
cho UTC, và chuyển đổi đó:
LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40);
DateTime utc = local.toDateTime(DateTimeZone.UTC);
long secondsSinceEpoch = utc.getMillis()/1000;
Lưu ý sử dụng giây ở đây như là một dấu thời gian Unix - các API khác (ví dụ: java.util.Date
) có thể mong đợi mili giây kể từ thời đại Unix.
Ngoài ra, bạn có thể sử dụng 'DateTimeConstants.MILLIS_PER_SECOND' thay cho' 1000' hoặc sử dụng 'Duration.millis (local.toDateTime (DateTimeZone.UTC) .getMillis) .getStandardSeconds'. – mixel
Đơn giản và gọn gàng, Khi nhà phát triển Joda đang đưa ra lý do để vạch trần getLocalMillis() là công khai. Liên kết: https://github.com/JodaOrg/joda-time/issues/87 – vijay
Nếu tôi nhớ lại, dấu thời gian Unix là số giây kể từ thời đại Unix, có thể giống như [this] (http://stackoverflow.com/questions/22990067/how-to-extract-epoch-from-localdate- và-localdatetime) – MadProgrammer
Một 'LocalDateTime' không có múi giờ, vì vậy nó không đại diện cho một ponit đúng lúc. Bạn cần phải xác định múi giờ để điều đó có ý nghĩa. –
@JonSkeet Đó là UTC! –