음수가 아닌 3 개의 정수 y
, m
및 d
(적어도 하나는 양수 여야 함)와 양수가 연도 인 유효한 날짜 (연도, 월, 일을 포함하는 합리적인 형식으로 추가 정보는 없음)가 제공되면 이다 날짜 y
년, m
월, d
원래 날짜 이후 일.
그레고리오 력은 모든 날짜 (그레고리오 력이 채택되기 전의 날짜)에 사용됩니다.
다음 날짜를 계산하는 방법은 다음과 같습니다.
y
연도에 추가m
이 달에 추가- 롤오버를 적용하여 날짜 정규화 (예 :
2018-13-01
->2019-01-01
) - 날짜가 해당 월의 마지막 날을 지난 경우 해당 월의 마지막 날로 변경하십시오 (예 :
2018-02-30
->2018-02-28
) d
하루에 추가- 롤오버를 적용하여 날짜 정규화 (예 :
2019-01-32
->2019-02-01
)
윤년 (4로 나눌 수 있지만 400으로 나눌 수없는 한 100으로 나눌 수없는 년)은 적절하게 처리해야합니다. 모든 입력 및 출력은 사용자 언어의 표현 가능한 정수 범위 내에 있습니다.
테스트 사례
테스트 케이스는 형식으로 제공되며 input => output
여기서 input
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
이 JSFiddle 을 테스트에 사용할 수 있습니다 .
이것은 코드 골프따라서 각 언어에서 가장 짧은 솔루션이 이깁니다.
y
, m
그리고 d
(예 : 수 d
2,147,483,000 수?)
All inputs and outputs will be within the representable integer range of your language.