음수가 아닌 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여기서 inputJSON 오브젝트는 있습니다.
{"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(예 : 수 d2,147,483,000 수?)
All inputs and outputs will be within the representable integer range of your language.