打印出当前日期

时间:2014-03-19 22:32:57

标签: c date calendar

实施确定并打印当前年,月和日的功能。例如:

Today is 03/04/2014.

到目前为止我的代码:

#include <stdio.h>
#include <time.h>

int main ()
{

    int days, weeks, months, years, option, rmd, currentyear, currentmonth;
    int daysinjan, daysinfeb, daysinmarch;
    time_t seconds;
    seconds = time(NULL);

    days = seconds/(60*60*24);
    weeks = seconds/((60*60*24)*7);
    rmd=seconds%31557600;
    months = ((seconds/31557600) * 12)+(((float)rmd/31557600)*12);
    years = days/(365.25);

    currentyear = 1970 + years;
    currentmonth = (((float)rmd/31557600)*12)+1;

    printf("%ld/%ld", currentmonth,currentyear);

    return 0;
}

请不要介意代码中所有无用的东西,这个问题是项目的一部分,我只是使用上一个问题中的代码来尝试使用该代码来解决这个问题。我遇到的问题是我无法打印当月的当天,因为我觉得我错误地解决了这个问题。

2 个答案:

答案 0 :(得分:3)

这使用标准库调用来为您完成所有数学运算 From Here

     #include <time.h>
     #include <stdio.h>

     #define SIZE 256

     int main (void)
     {
       char buffer[SIZE];
       time_t curtime;
       struct tm *loctime;

       /* Get the current time. */
       curtime = time (NULL);

       /* Convert it to local time representation. */
       loctime = localtime (&curtime);

       /* Print out the date and time in the standard format. */
       fputs (asctime (loctime), stdout);

       /* Print it out in a nice format. */
       strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
       fputs (buffer, stdout);
       strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
       fputs (buffer, stdout);

       return 0;
     }

如果你想 创建一个函数来返回一个字符串,你可以这样做:

char * getTimeString (char *str)
{
    //replace this comment with relevant code from above with (at least) two additional lines:
    strcpy(str, buffer);
    return str;
}

将其称为 ,如下所示:

int main(void)
{
    char *timeStr;
    timeStr = malloc(30);//sufficient length to accept values assigned in getTimeString()
    printf("%s\n", getTimeString(timeStr);
    free(timeStr); 
    return 0;
}

答案 1 :(得分:0)

#include <time.h> // for time_t
#include <stdio.h> // for printf

int main () {

int days, weeks, months, years, option, rmd, currentyear, currentmonth;

int daysinjan, daysinfeb, daysinmarch;

time_t seconds;

seconds = time(NULL);

    days = seconds/(60*60*24);
    weeks = seconds/((60*60*24)*7);
    rmd=seconds%31557600;
    months = ((seconds/31557600) * 12)+(((float)rmd/31557600)*12);
    years = days/(365.25);

    currentyear = 1970 + years;
    currentmonth = (((float)rmd/31557600)*12)+1;


    printf("%ld/%ld", currentmonth,currentyear);


return 0;
}