Dada data, obtenha o dia da semana - SystemTime
-
26-09-2019 - |
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)?
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