给定日期,获取星期几 - SYSTEMTIME

8

如果提供一个日期(月-日-年),使用SYSTEMTIME是否可以确定星期几?还是这个结构只能单向使用?

如果SYSTEMTIME无法完成我所要求的功能,最轻量级的方法是什么(使用Win32)?

3个回答

19
根据 msdn,当将 SYSTEMTIME 转换为 FILETIME 时,会忽略 wDayOfWeek 成员。在转换回来时,它会被填充。
SYSTEMTIME t = { 2010, 6, -1 /*ignored*/, 11 };
FILETIME ft;
HRESULT hrto   = SystemTimeToFileTime( &t, &ft );
HRESULT hrback = FileTimeToSystemTime( &ft, &t );

WORD dayofweek = t.wDayOfWeek;

13

另一种可能更加平台无关的方法是使用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 );

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接