cuốn sách gpt4 ai đã làm

Có hành vi nào khác giữa Calendar#add(Calendar.MONTH,months) và LocalDate#plusMonth(months) không?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 07:59:44 26 4
mua khóa gpt4 Nike

Tôi đang làm việc với một số mã kế thừa java.util.Calendar Được sử dụng để tính toán liên quan đến ngày (về cơ bản là thêm tháng). Bây giờ tôi muốn sử dụng trong mã java.time.LocalDate 替换 java.util.Calendar Nhưng tôi không muốn thay đổi hành vi. Vì vậy, tôi đang tìm kiếm một nguồn làm rõ rằng chúng tạo ra kết quả giống nhau cho cùng một phép tính trong mọi trường hợp, nhưng tôi không thể tìm thấy bất kỳ nguồn nào.

Cụ thể là tôi muốn biết liệu có ngày nào khiến chúng tạo ra các kết quả khác nhau hay không:

Lịch#add(Lịch.THÁNG, tháng)

LocalDate#plusMonth(tháng)

Tôi đã thử nghiệm một số trường hợp góc (chẳng hạn như ngày liên quan đến năm nhuận) và chúng dường như cho kết quả tương tự, nhưng tôi không chắc chắn 100% về điều này. Có thông tin chính thức nào về điều này hoặc một số khác biệt đã biết giữa chúng không?

câu trả lời hay nhất

长话短说

nếu như:

  • Bạn có chắc là bạn LịchThực raLịch Gregorian (cho đến nay là lớp con được sử dụng phổ biến nhất) và...
  • Ngày của bạn không thể cách đây hơn 100 năm, nên...

…bạn có thể sử dụng một cách an toànLocalDate#plusMonth(tháng)thay vì Lịch#add(Lịch.THÁNG, tháng) .

Chi tiết

Chúc mừng bạn đã quyết định bắt đầu từ cái cũ và thiết kế kém Lịch Các lớp được di chuyển sang java.time Ngày địa phương, một API ngày và giờ Java hiện đại. Điều này sẽ cải thiện cơ sở mã của bạn.

Bạn nói đúng, các phương pháp bạn đề cập đều phục vụ cùng một mục đích và thường hoạt động giống nhau. Vì vậy khi bạn đi từ Lịch Khi di chuyển sang java.time, nếu bạn tìm thấy Ngày địa phương là một lớp mới phù hợp để sử dụng thì bạn sẽ sử dụng LocalDate#plusMonth(tháng) trước đây bạn đã sử dụng Lịch#add(Lịch.THÁNG, tháng) địa điểm.

Sự khác biệt bao gồm:

  • Lịch lớp là đại diện của nhiều hệ thống lịch khác nhau ( Gregorian , Phật tử Lớp cha trừu tượng (siêu lớp) của lớp ngày (và thời gian) trong v.v.),Ngày địa phương Luôn luôn trong lịch Gregorian. Vì mỗi hệ thống lịch có định nghĩa riêng về tháng nên việc thêm số tháng vào lịch không phải lịch Gregory có thể dẫn đến kết quả tương tự. LocalDate.plusMonths cho kết quả rất khác nhau.
  • Nếu cuộc hẹn hò của bạn quay trở lại lịch sử,Ngày địa phương sử dụng báo trước lịch Gregory cũng tạo ra một sự khác biệt nhỏ. Điều này có nghĩa là nó không sử dụng. lịch JulianNgày nó được sử dụng từ nhiều thế kỷ trước.
  • Lịch.add Sửa đổi cách bạn gọi nó Lịch sự vật,LocalDate.plusMonthsTrở lại với ngày mới Ngày địa phương sự vật.
  • Mặc dù để quay ngược lịch bạn cần chuyển các tháng âm sang Lịch::thêm , Ngày địa phương Có một cách thuận tiện trừ điThángBạn thường muốn sử dụng thay vì cộng thêmtháng phương thức (mặc dù cả hai đều hợp lệ).
  • Phạm vi ngày mà mỗi lớp có thể đại diện là khác nhau. Tôi không nhớ rõ ngày tối thiểu và tối đa cho mỗi ngày. hiện hữu Lịch/Lịch Gregorian , nhiều cách khác nhau để xem chúng, chẳng hạn như nhận đượcGreatestTối thiểu nhận được ít nhất tối đa 。对于 Ngày địa phương, xem các hằng số:TỐI ĐA & PHÚT .

Về java - Có hành vi nào khác giữa Calendar#add(Calendar.MONTH,months) và LocalDate#plusMonth(months) không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57901548/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress