是否可以使用SYSTEMTIME确定星期几,是否提供了日期(月 - 日 - 年),或者此结构是否单向?
如果SYSTEMTIME不能这样做(使用Win32),那么实现我要问的最轻量级的方法是什么?
答案 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)
另一种可能与平台无关的方法是使用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 );
答案 2 :(得分:1)
使用SystemTimeToFileTime将SYSTEMTIME转换为FILETIME。然后使用FileTimeToSystemTime将其转换为具有星期几的SYSTEMTIME。