Search code examples
cdatetime

How to get the date and time values in a C program?


I have something like this:

char *current_day, *current_time;
system("date +%F");
system("date +%T");

It prints the current day and time in the stdout, but I want to get this output or assign them to the current_day and current_time variables, so that I can do some processing with those values later on.

current_day ==> current day
current_time ==> current time

The only solution that I can think of now is to direct the output to some file, and then read the file and then assign the values of date and time to current_day and current_time. But I think this is not a good way. Is there any other short and elegant way?


Solution

  • Use time() and localtime() to get the time:

    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
      time_t t = time(NULL);
      struct tm tm = *localtime(&t);
      printf("now: %d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
    }