Всем привет,
Сегодня хорошее настроение по программировать ночью. (Играюсь тестовым заданием на вакансию в Binary Studio) Наткнулся на нераскрытую темусисек православного определения дня недели по дате.
Гугл до 3й страницы предлагает страшные велосипеды основанные на:
Сегодня хорошее настроение по программировать ночью. (Играюсь тестовым заданием на вакансию в Binary Studio) Наткнулся на нераскрытую тему
Гугл до 3й страницы предлагает страшные велосипеды основанные на:
- Формуле Зеллера (сегодня впервые узнал о ней) тыц
- Win API пары функций:
SystemTimeToFileTime(&st, &ft); FileTimeToSystemTime(&ft, &st);
- предлагали использовать SQL запрос :)
В тоже время красивое и кроссплатформенное решение достигается использованием пары функций gmtime() для UTC времени и localtime() для локального времени. Вывод текущего дня недели будет таким:
char * weekday[] = { "Sun", "Mon", "Tue", "We", "Thu", "Fri", "Sat"};
// текущее время в UTC:
time_t currentTime( ::time( NULL ) );
// Определение дня недели и дня года:
struct tm * ptm;
ptm = ( localtime( ¤tTime ) );
// Вывод
std::cout << weekday[ptm->tm_wday] << std::endl;
Вот так все просто решается :) Надеюсь кому нибудь пригодится.