Với ba số nguyên không âm y
, m
và 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à y
năm, m
tháng và d
ngà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
y
vào năm - Thêm
m
và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
d
và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 đó input
mộ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
, m
và d
(ví dụ có thể d
được 2147483000?)
All inputs and outputs will be within the representable integer range of your language.