Алгоритм даты и дня недели?

Каков алгоритм, который с учетом дня, месяца и года возвращает день недели?

12 голосов | спросил jmasterx 27 AMpWed, 27 Apr 2011 03:52:09 +040052Wednesday 2011, 03:52:09

2 ответа


0

Это можно сделать с помощью std::mktime и std::localtime . Эти функции не просто POSIX, они предписаны стандартом C ++ (C ++ 03 §20.5).

#include <ctime>

std::tm time_in = { 0, 0, 0, // second, minute, hour
        4, 9, 1984 - 1900 }; // 1-based day, 0-based month, year since 1900

std::time_t time_temp = std::mktime( & time_in );

// the return value from localtime is a static global - do not call
// this function from more than one thread!
std::tm const *time_out = std::localtime( & time_temp );

std::cout << "I was born on (Sunday = 0) D.O.W. " << time_out->tm_wday << '\n';
ответил Potatoswatter 27 AMpWed, 27 Apr 2011 04:03:28 +040003Wednesday 2011, 04:03:28
0

Вам нужна отправная точка. Сегодня все хорошо. Жесткий код.

Затем вам нужно указать количество дней в месяце. Это 31, 28, 31, 30, 31, 30, .... Таким образом, вы можете начать добавлять и вычитать 365% 7 в день недели для каждого года и (сумма дней в разнице месяцев) снова% 7. И так далее.

Предостережение: високосные годы происходят на каждом 4-м году, но не на каждом 100-м, если этот год также не кратен 400.

ответил bdares 27 AMpWed, 27 Apr 2011 04:04:15 +040004Wednesday 2011, 04:04:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132