Учитывая дату, получите день недели - СИСТЕМНОЕ ВРЕМЯ

Действительно ли возможно определить день недели, с помощью СИСТЕМНОГО ВРЕМЕНИ, если дата (дневной год месяца) обеспечивается, или действительно ли эта структура односторонняя только?

Что самый легкий путь состоит в том, чтобы выполнить то, что я спрашиваю, не может ли СИСТЕМНОЕ ВРЕМЯ сделать этого (использование Win32)?

7
задан 10 June 2010 в 19:28
поделиться

3 ответа

Согласно msdn , элемент wDayOfWeek игнорируется при преобразовании SYSTEMTIME в FILETIME . При обратном преобразовании заполняется.

SYSTEMTIME t = { 2010, 6, -1 /*ignored*/, 11 };
FILETIME ft;
HRESULT hrto   = SystemTimeToFileTime( &t, &ft );
HRESULT hrback = FileTimeToSystemTime( &ft, &t );

WORD dayofweek = t.wDayOfWeek;
18
ответ дан 6 December 2019 в 05:54
поделиться

Используйте SystemTimeToFileTime, чтобы преобразовать SYSTEMTIME в FILETIME. Затем используйте FileTimeToSystemTime, чтобы преобразовать его в SYSTEMTIME с указанием дня недели.

1
ответ дан 6 December 2019 в 05:54
поделиться

Другой способ сделать это, который может быть немного более независимым от платформы, - это использовать localtime или gmtime .

Например, выведите текущий день недели:

struct tm *timeval;
time_t tt;
tt = time( NULL );
timeval = localtime( &tt );
// print zero based day of week
printf( "day of week = %d\n", timeval->tm_wday );
12
ответ дан 6 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

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