Код, который я создал до сих пор:
#include <stdio.h>
#include <time.h>
int main()
{
int days, rmd;
time_t seconds;
seconds = time(NULL);
days = (seconds/(60*60*24));
rmd=days%7;
if(rmd==4){
printf("Monday \n");
}
if(rmd==5){
printf("Tuesday \n");
}
if(rmd==6){
printf("Wednesday \n");
}
if(rmd==0){
printf("Thursday \n");
}
if(rmd==1){
printf("Friday \n");
}
if(rmd==2){
printf("Saturday \n");
}
if(rmd==3){
printf("Sunday \n");
}
return 0;
}
Я понимаю, что время (NULL) возвращает количество секунд, прошедших с момента 1 января 1970 года. Я также понимаю, что jan 1 был в четверг. Я также знаю, что часовой пояс UTC на 5 часов впереди EST, но я точно не знаю, как принимать во внимание все эти факторы.
Вы можете использовать localtime()
и strftime()
следующим образом:
#include <stdio.h>
#include <time.h>
int main()
{
time_t rawtime;
struct tm *info;
char buffer[100];
time(&rawtime);
info = localtime(&rawtime);
strftime(buffer, sizeof(buffer), "%A", info);
printf("Current weekday: %s\n", buffer);
return 0;
}
Если имя недели недели должно быть настроено, вы также можете вручную использовать info->tm_wday
, который представляет день недели, диапазон от 0 до 6.
Если возможно (например, вы не ограничены домашним заданием от его использования), рассмотрите возможность использования stftime:
http://www.cplusplus.com/reference/ctime/strftime/
% A даст вам день недели.