2015-06-23 16 views
10

Tôi đã thử như dưới đây, nhưng trong cả hai trường hợp, nó hiển thị cùng một lúc? Những gì tôi đang làm sai.Java8 Thêm giờ vào LocalDateTime Không hoạt động

LocalDateTime currentTime = LocalDateTime.now(ZoneId.of("UTC")); 
    Instant instant = currentTime.toInstant(ZoneOffset.UTC); 
    Date currentDate = Date.from(instant); 
    System.out.println("Current Date = " + currentDate); 
    currentTime.plusHours(12); 
    Instant instant2 = currentTime.toInstant(ZoneOffset.UTC); 
    Date expiryDate = Date.from(instant2); 
    System.out.println("After 12 Hours = " + expiryDate); 

"Ngày nay" Thời gian đang hiển thị tương tự như "Sau 12 giờ" ...

Trả lời

13

Các tài liệu của LocalDateTime quy định cụ thể trường hợp của LocalDateTime là không thay đổi, ví dụ plusHours

public LocalDateTime plusHours(long hours)

Trả về bản sao của số LocalDateTime này với số lượng được chỉ định là giờ đã được thêm .

Ví dụ này không thay đổi và không bị ảnh hưởng bởi cuộc gọi phương thức này.

Tham số:
hours - giờ để thêm, có thể là tiêu cực
Returns:
một LocalDateTime dựa trên này ngày-thời gian với giờ nói thêm, không phải là null
Ném:
DateTimeException - nếu kết quả vượt quá phạm vi ngày được hỗ trợ

Vì vậy, bạn tạo một đối tượng mới của LocalDateTime khi bạn thực hiện thao tác cộng, bạn cần phải gán giá trị này như sau:

LocalDateTime nextTime = currentTime.plusHours(12); 
    Instant instant2 = nextTime.toInstant(ZoneOffset.UTC); 
    Date expiryDate = Date.from(instant2); 
    System.out.println("After 12 Hours = " + expiryDate); 

tôi hy vọng nó có thể hữu ích cho bạn.

+0

Chết tiệt, tôi bị mất một phần không thay đổi. Nó hoạt dộng bây giờ. Cảm ơn nhiều. – Raj

5

Từ java.timepackage Javadoc (tôi nhấn mạnh):

Các lớp được định nghĩa ở đây đại diện cho các khái niệm ngày thời gian chủ yếu, bao gồm khoảnh khắc, thời gian, ngày tháng, thời gian, thời gian khu và giai đoạn. Chúng được dựa trên hệ thống lịch ISO, là lịch thực tế trên thế giới theo các quy tắc Gregorian tự trị. Tất cả các lớp học là không thay đổi và chỉ an toàn.

Vì mỗi lớp trong gói java.time là không thay đổi, bạn cần phải nắm bắt kết quả:

LocalDateTime after = currentTime.plusHours(12); 
... 
Các vấn đề liên quan