Обычно вы делаете что-то вроде этого:
#include <time.h>
#include <iostream>
int main() {
static const char *names[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t current = time(NULL);
struct tm *now = localtime(¤t);
std::cout << names[now->tm_wday];
return 0;
}
В нынешнем виде это просто печатает аббревиатуру для текущего дня недели, но (конечно), как только вы инициализировали struct tm
с правильными данными, вы можете использовать все поля из них, которые вы хотите.
Обратите внимание, однако, что localtime
возвращает адрес статически распределенного буфера.Вызов любой другой функции времени может перезаписать этот буфер, поэтому, если вам нужны данные за любой промежуток времени, вы обычно хотите определить struct tm
для его сохранения и скопировать данные из буфера, используемого localtime
, в свой собственный буфер..
Также обратите внимание, что вместо определения собственного массива имен дней недели вы обычно хотите использовать strftime
для форматирования вывода.Он не только уже встроен (и названия месяцев и т. Д.), Но также может (по крайней мере, если память служит) локализовать имена на основе локали.