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

もう少しプラットフォームに依存しない別の方法は、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 );
于 2010-06-10T19:40:10.623 に答える
1

SystemTimeToFileTime を使用して、SYSTEMTIME を FILETIME に変換します。次に、FileTimeToSystemTime を使用して、曜日を含む SYSTEMTIME に変換します。

于 2010-06-10T19:34:08.470 に答える