Действительно ли возможно определить день недели, с помощью СИСТЕМНОГО ВРЕМЕНИ, если дата (дневной год месяца) обеспечивается, или действительно ли эта структура односторонняя только?
Что самый легкий путь состоит в том, чтобы выполнить то, что я спрашиваю, не может ли СИСТЕМНОЕ ВРЕМЯ сделать этого (использование Win32)?
Согласно 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;
Используйте SystemTimeToFileTime, чтобы преобразовать SYSTEMTIME в FILETIME. Затем используйте FileTimeToSystemTime, чтобы преобразовать его в SYSTEMTIME с указанием дня недели.
Другой способ сделать это, который может быть немного более независимым от платформы, - это использовать 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 );