Đố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?
Bạn có thể cho tôi biết sau đó cần có gì để chuyển Clock thành tham số? – nantitv
Đồ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 –
@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? –