Tôi dường như hiểu sai chuyển đổi của java.util.Date
từ và đến java.time.Instance
. Tôi có một số mã cũ mà tôi cần phải hoạt động và mã này sử dụng java.util.Date
trong API của nó.Chuyển đổi từ `java.time.Instant` sang` java.util.Date` thêm số chênh lệch UTC
Tôi hơi bối rối khi bù đắp được thêm vào API Date
. Đó là tôi hiểu rằng Date
là một thời gian UTC ("class Date là nhằm phản ánh phối hợp thời gian phổ quát (UTC)"), nhưng khi tôi tạo một Date
từ một Instant
một bù đắp được thêm vào:
public class TestDateInstant {
@Test
public void instantdate() {
Instant i = Instant.now();
System.out.println(i);
Date d = Date.from(i);
System.out.println(d);
assertThat(i, equalTo(d.toInstant()));
}
}
Các xác nhận giữ, nhưng đầu ra trên bàn điều khiển là:
2017-09-26T08:24:40.858Z
Tue Sep 26 10:24:40 CEST 2017
Tôi tự hỏi tại sao Date.from
sử dụng khoản bù trong trường hợp này.
'Date.from' không sử dụng bù trừ. Giá trị offset được áp dụng khi * in * giá trị 'Date'. – Andreas
Bài viết hữu ích để hiểu điều gì đang xảy ra: https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/ –