Trước Java-8, tôi đã quen với việc luôn giữ bất kỳ ngày/thời gian nào liên quan như mili giây kể từ Epoch và chỉ xử lý ngày/giờ có thể đọc được trên con đường, tức là trong giao diện người dùng hoặc tệp nhật ký hoặc khi phân tích cú pháp người dùng được tạo đầu vào.Java 8 epoch-millis tem thời gian để định dạng ngày, làm thế nào?
Tôi nghĩ rằng điều này vẫn an toàn với Java-8, và bây giờ tôi đang tìm cách ngắn gọn nhất để có được một ngày được định dạng từ một dấu thời gian mili giây. Tôi cố gắng
df = Dateformatter.ofPattern("...pattern...");
df.format(Instant.ofEpochMilli(timestamp))
nhưng nó bom ra với Unsupported field: YearOfEra
trong Instant.getLong(...)
mà tôi nửa hiểu. Bây giờ những gì để sử dụng thay vì Instant
?
LocalDateTime.ofEpoch(Instant, ZoneId)
có vẻ sai, vì tôi không quan tâm đến thời gian địa phương. Tôi chỉ muốn xem múi giờ địa phương khi áp dụng trình định dạng. Bên trong nó chỉ là Instant
.
Tương tự với ZonedDateTime.ofInstant(Instant, ZoneId)
, tôi đã nghĩ chỉ áp dụng ZoneId
chỉ khi định dạng. Nhưng tôi nhận thấy rằng DateTimeFormatter
không tự giải quyết thêm với múi giờ, có vẻ như vậy, vì vậy tôi nghĩ tôi cần phải sử dụng một trong những điều trên.
Điều nào được ưu tiên và tại sao? Hoặc tôi có nên sử dụng cách khác để định dạng dấu thời gian epoch-millis làm ngày/giờ với múi giờ không?