7
votes

Date donnée, obtenez le jour de la semaine - SystemTime

est-il possible de déterminer le jour de la semaine, à l'aide de SystemTime, si une date (jour-jour-année) est fournie ou est cette structure à sens unique?

Quelle est la manière la plus légère d'accomplir ce que je demande si SystemTime ne peut pas le faire (en utilisant Win32)?


0 commentaires

3 Réponses :


18
votes

Selon le MSDN , Le membre wdayofweek code> est ignoré lors de la conversion systemtime code> vers filétime code>. Lors de la conversion, 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;


0 commentaires

1
votes

Utilisez SystemTIMetOfileTime pour convertir le temps système en une filetime. Ensuite, utilisez la filétinetosystemtime pour le convertir en une durée de la semaine.


0 commentaires

12
votes

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, print Current Jour de la semaine: P>

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 commentaires