Với ba số nguyên không âm y, mvà d(trong đó ít nhất một người phải là số dương) và một ngày hợp lệ với một năm tích cực (trong bất kỳ định dạng hợp lý bao gồm năm, tháng và ngày, và không có thêm thông tin), sản lượng ngày đó là ynăm, mtháng và dngày sau ngày ban đầu.
Lịch Gregorian sẽ được sử dụng cho tất cả các ngày (thậm chí cả ngày trước khi thông qua lịch Gregorian).
Phương pháp tính toán ngày tiếp theo như sau:
- Thêm
yvào năm - Thêm
mvào tháng - Bình thường hóa ngày bằng cách áp dụng Rollover (ví dụ
2018-13-01->2019-01-01) - Nếu ngày đã qua ngày cuối cùng của tháng, hãy đổi ngày đó sang ngày cuối cùng trong tháng (ví dụ:
2018-02-30>2018-02-28) - Thêm
dvào ngày - Bình thường hóa ngày bằng cách áp dụng Rollover (ví dụ
2019-01-32->2019-02-01)
Năm nhuận (năm chia hết cho 4, nhưng không chia hết cho 100 trừ khi chia hết cho 400) phải được xử lý thích hợp. Tất cả đầu vào và đầu ra sẽ nằm trong phạm vi số nguyên có thể biểu thị của ngôn ngữ của bạn.
Các trường hợp thử nghiệm
Các trường hợp thử nghiệm được cung cấp theo định dạng input => output, trong đó inputmột đối tượng JSON.
{"date":"2018-01-01","add":{"d":1}} => 2018-01-02
{"date":"2018-01-01","add":{"M":1}} => 2018-02-01
{"date":"2018-01-01","add":{"Y":1}} => 2019-01-01
{"date":"2018-01-30","add":{"M":1}} => 2018-02-28
{"date":"2018-01-30","add":{"M":2}} => 2018-03-30
{"date":"2000-02-29","add":{"Y":1}} => 2001-02-28
{"date":"2000-02-29","add":{"Y":4}} => 2004-02-29
{"date":"2000-01-30","add":{"d":2}} => 2000-02-01
{"date":"2018-01-01","add":{"Y":2,"M":3,"d":4}} => 2020-04-05
{"date":"2018-01-01","add":{"Y":5,"M":15,"d":40}} => 2024-05-11
Bạn có thể sử dụng JSFiddle này để thử nghiệm.
Đây là môn đánh gôn , vì vậy giải pháp ngắn nhất (trong mỗi ngôn ngữ) sẽ thắng.
y, mvà d(ví dụ có thể dđược 2147483000?)
All inputs and outputs will be within the representable integer range of your language.