Need to get system date/time

I need to get the system date and time in 'C' (ansi).  

In Windows, I use the following code to do so:
time_string[2] = '\0';
time_string[5] = '\0'
hours = atoi(&time_string[0]);
minutes = atoi(&time_string[3]);

date_string[2] = '\0';
date_string[5] = '\0';
date_string[8] = '\0';
month = atoi(&date_string[0]);
day = atoi(&date_string[3]);
year = atoi(&date_string[6]);

This code will not compile in redHat linux 5.0.  I believe this is faily primitive code
though. What I would actually like, is to get the time in a string like so: "9:45 AM",
and the date like so: "January 25, 1998"  Is there a way to easily do this in Linux/Unix??

What about calling the Tzset() function -  Is this necessary??  when I do a `date` in the
unix environment, it seems correct.

Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

António SargentoConnect With a Mentor Chief ArchitectCommented:
You have the function time() that return the system time, i.e., the number of seconds from January 1, 1970.
You could use this function like this:

long t=time((time_t*)0);

Do not forget to include the time.h

Then with this value you could convert it to any format that you want.
Exist several functions and I will enumerate a few:

char *ctime(long /* the return value of time() */);
output: Fri May 15 23:52:00 1998

You could use also the functions gmttime, localtime asctime. These functions return
a struct (struct tm) that has all the information associated to a date (week day, month, etc).

You could check the time.h and see the manual pages of these functions for further details.

#include <time.h>
time_t t[1];
char *date;
*t = time(0);

#include <time.h>
time_t t[1];
struct tm *tm;
int hours,minutes,month,day,year,dst;
*t = time(0);
hours = tm->tm_hour;
minutes = tm->tm_min;
month = tm->tm_mon+1;
day = tm->tm_mday;
year = tm->tm_year+1900;
dst = tm->tm_isdst;

All Courses

From novice to tech pro — start learning today.