7

如果提供了日期(月-日-年),是否可以使用 SYSTEMTIME 确定星期几,或者这种结构仅是单向的?

如果SYSTEMTIME不能做到(使用Win32),那么完成我所问的最轻量级的方法是什么?

4

3 回答 3

18

根据msdn,该wDayOfWeek成员在转换SYSTEMTIMEFILETIME. 转换回来时,它被填写。

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

WORD dayofweek = t.wDayOfWeek;
于 2010-06-10T19:33:55.053 回答
12

另一种可能更独立于平台的方法是使用localtimegmtime

例如,打印当前星期几:

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 );
于 2010-06-10T19:40:10.623 回答
1

使用 SystemTimeToFileTime 将 SYSTEMTIME 转换为 FILETIME。然后使用 FileTimeToSystemTime 将其转换为带有星期几的 SYSTEMTIME。

于 2010-06-10T19:34:08.470 回答