2015-06-27 34 views
8

Đối sau mã cho java 8java 8 lần api - Instant.now (đồng hồ) vs LocaldateTime.now (đồng hồ)

1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
    2. System.out.println(Instant.now(Clock.systemDefaultZone())); 

Line 1 in thời điểm hiện tại bằng cách thêm bù đắp nhưng dòng 2 in thời điểm hiện tại mà không cần thêm bù lại.

Tôi đã kiểm tra mã nguồn của cả hai và thấy rằng LocaDateTime.now(clock) trả về clock.instant() thời gian trả lại bằng cách thêm bù trừ nhưng Instant.now(clock) không làm như vậy.

Tại sao thiết kế như thế này? Chúng ta không mong đợi kết quả tương tự trong cả hai trường hợp?

Trả lời

6

CẬP NHẬT: Instant không liên quan gì đến UTC theo nghĩa múi giờ. Nó liên quan đến UTC như là một tiêu chuẩn thời gian mà thôi.

Sự khác biệt chính là loại trả về. Chúng có các biểu diễn String khác nhau bởi vì các kiểu tự chúng có ý nghĩa rất khác nhau.

Ngay lập tứC# now (Đồng hồ) trả về Instant. An Tức thì"[a]n instantaneous point on the time-line".

LOCALDATE # bây giờ (Clock) lợi nhuận LOCALDATE. A LocalTime"a description of the local time as seen on a wall clock".

Như một kết quả tức thì # bây giờ (Clock)LOCALDATE # bây giờ (Clock) nghĩa những điều rất khác nhau và tự nhiên có kết quả khác nhau. Điều quan trọng họ có chung là một cái tên. Tên phương thức là bụi. Tham khảo các loại.

Trên một cố định Clock, cả Instant.now (đồng hồ)LocalDate.now (đồng hồ) sẽ trở lại giá trị không đổi. Điểm chấp nhận Đồng hồ làm tham số là có thể kiểm soát những thứ như thời gian tham chiếu hoặc độ phân giải đồng hồ.

+0

Bạn có thể cho tôi biết sau đó cần có gì để chuyển Clock thành tham số? – nantitv

+2

Đồng hồ được cho phép dưới dạng thông số cho phép các trường hợp sử dụng như đồng hồ cố định hoặc bù đắp trong thử nghiệm hoặc các độ phân giải khác nhau như giây hoặc phút theo yêu cầu. https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html –

+0

@nantitv Tôi đã viết lại câu trả lời của mình. Đó là một chút mơ hồ trước đây. Hiện nó có trả lời câu hỏi của bạn một cách hiệu quả không? –

Các vấn đề liên quan