Pergunta

É possível determinar o dia da semana, usando o SystemTime, se uma data (mês-dia) for fornecida ou essa estrutura é apenas uma via?

Qual é a maneira mais leve de realizar o que estou perguntando se o SystemTime não pode fazê -lo (usando o Win32)?

Foi útil?

Solução

De acordo com msdn, a wDayOfWeek membro é ignorado ao converter SYSTEMTIME para FILETIME. Ao se converter, está preenchido.

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

WORD dayofweek = t.wDayOfWeek;

Outras dicas

Outra maneira de fazer isso que pode ser um pouco mais independente da plataforma seria usar horário local ou gmtime.

Por exemplo, imprima o dia atual da semana:

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 );

Use o SystemTimeTofileTime para encobrir o SystemTime em um tempo de filtro. Em seguida, use o FileTimetosystemTeTo o converta em um SystemTime com o dia da semana.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top