C Interview Questions and Answers

 

How can I find the day of the week given the date?

Here are three methods:



1. Use mktime or localtime # . Here is a code fragment which computes the day of
the week for February 29, 2000:





#include <stdio.h>



#include <time.h>





char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday",


"Thursday", "Friday", "Saturday"};





struct tm tm;





tm.tm_mon = 2 - 1;



tm.tm_mday = 29;



tm.tm_year = 2000 - 1900;



tm.tm_hour = tm.tm_min = tm.tm_sec = 0;



tm.tm_isdst = -1;





if(mktime(&tm) != -1)



printf("%sn", wday[tm.tm_wday]);





When using mktime like this, it's usually important to set tm_isdst to -1,
as shown (especially if tm_hour is 0), otherwise a daylight saving time correction
could push the time past midnight into another day. # Use Zeller's congruence,
which says that if





J is the number of the century [i.e. the year / 100],



K the year within the century [i.e. the year % 100],



m the month,



q the day of the month,



h the day of the week [where 1 is Sunday];

Posted by:Richards