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

时间:2010-06-10 19:28:14

标签: c++ winapi systemtime

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

如果SYSTEMTIME不能这样做(使用Win32),那么实现我要问的最轻量级的方法是什么?

3 个答案:

答案 0 :(得分:18)

根据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;

答案 1 :(得分: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 );

答案 2 :(得分:1)

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