2010-06-10 4 views
7

Est-il possible de déterminer le jour de la semaine, en utilisant SYSTEMTIME, si une date (mois-jour-année) est fournie ou si cette structure est unidirectionnelle seulement?Date donnée, Obtenir le jour de la semaine - SYSTEMTIME

Quel est le moyen le plus léger pour accomplir ce que je demande si SYSTEMTIME ne peut pas le faire (en utilisant Win32)?

Répondre

18

Selon le msdn, le membre wDayOfWeek est ignoré lors de la conversion SYSTEMTIME en FILETIME. Lors de la conversion en arrière, il est rempli.

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

WORD dayofweek = t.wDayOfWeek; 
1

Utilisez SystemTimeToFileTime pour Covert la SYSTEMTIME à un FILETIME. Utilisez ensuite FileTimeToSystemTimeto pour le convertir en SYSTEMTIME avec le jour de la semaine.

12

Une autre façon de le faire qui pourrait être un peu plus indépendant de la plate-forme serait d'utiliser localtime ou gmtime.

Par exemple, imprimer jour courant de la semaine:

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

Merci pour votre réponse Mark –

Questions connexes