Как мне установить дату следующего дня по своему выбору, используя c ++? - PullRequest
1 голос
/ 22 июня 2010

Я бы хотел определить следующую дату, в которой значение дня недели будет равно указанному мной.

Например, сегодня 21.06.2010, а значение дня недели 1 b/ с сегодня понедельник.Как найти следующую дату, скажем, значение дня недели, равное 3.

Я хотел бы рассмотреть все случаи, которые близки к концу чего-либо, включая месяц и год.Есть ли какой-нибудь простой способ сделать это, или мне нужно вручную проверить, подходит ли он к концу месяца или года, и внести соответствующие изменения?Я чувствую, что есть простое и лучшее решение, чем делать это.

1 Ответ

1 голос
/ 22 июня 2010

Вы можете сложить свои значения в struct tm, а затем нормализовать их с помощью вызова mktime. Это будет игнорировать день недели и день года на входе и нормализует другие значения. Например, вы можете передать ему ввод 31 февраля день , и он преобразует его в 3 марта день (или 2 марта й для прыжка год).

Чтобы использовать это, нормальная последовательность будет вызывать time, чтобы получить текущее время как time_t. Затем преобразуйте это в struct tm с помощью вызова localtime. Отрегулируйте время в struct tm по мере необходимости (например, если оно говорит, что сегодня вторник, а вы хотите пятницу, добавьте три к дню месяца). Затем вызовите mktime, чтобы нормализовать значения, если вы (например) переполнились с одной недели / месяца / года на следующую.

...