Добавить годы, месяцы и дни к дате C
Я пытаюсь написать алгоритм, который принимает ввод даты ("2000-01-01"), а также "y|m|d", где y - количество лет, которое нужно добавить к исходной дате, а также m и d. месяцы и дни. Этот алгоритм должен также учитывать високосные годы. Извините, я не опубликовал код, у меня пока ничего не получилось.
Алгоритм также должен работать так: если вы добавите три месяца к 30 ноября, вы получите 28 февраля следующего года или 29, если это високосный год. Таким образом, если месяц, с которого вы приходите, будет длиннее, чем последний итоговый месяц, будет принят последний день последнего итогового месяца.
Может ли кто-нибудь дать мне несколько советов о том, как написать это или ссылку на какие-либо полезные ресурсы?
Я надеюсь, что это имеет смысл, любые вопросы, дайте мне знать. Благодарю.
2 ответа
Похоже, у вас проблема решена достаточно хорошо. Вот алгоритм нахождения високосного года:
if year is not divisible by 4 then common year
else if year is not divisible by 100 then leap year
else if year is not divisible by 400 then common year
else leap year
Большинство, если не все, что вам нужно, можно найти в <ctime>
библиотека ( http://www.cplusplus.com/reference/ctime/).
В частности посмотрите вверх time_t
а также struct tm
типы и как конвертировать между двумя (localtime()
, gmttime()
...) Обратите внимание, что вы можете добавлять дни, часы, месяцы и т. Д. В поля struct tm
и они обрабатываются должным образом, например, "32 января" становится "1 февраля".
<ctime>
Библиотека также обрабатывает високосные годы.
Ваш способ добавления 3-х месяцев кажется не традиционным, поэтому вам, возможно, придется проверить это вручную. Все еще достаточно легко с помощью <ctime>
,
РЕДАКТИРОВАТЬ: Прежде чем кто-то жалуется, что <ctime>
это C++, в обычном C эта библиотека находится в <time.h>
,