Solved

Need to get system date/time

Posted on 1998-05-15
3
727 Views
Last Modified: 2013-12-26
I need to get the system date and time in 'C' (ansi).  

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

_strdate(date_string);
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.


0
Comment
Question by:cwilliso
  • 2
3 Comments
 
LVL 84

Expert Comment

by:ozo
Comment Utility
#include <time.h>
time_t t[1];
char *date;
*t = time(0);
date=asctime(localtime(t));

0
 
LVL 2

Accepted Solution

by:
António Sargento earned 100 total points
Comment Utility
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.



0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
#include <time.h>
time_t t[1];
struct tm *tm;
int hours,minutes,month,day,year,dst;
*t = time(0);
tm=localtime(t);
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;

0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Powershell based monitoring system 2 126
maxBlock challenge 30 99
no14 challenge 14 56
Line meaning 9 75
Introduction: Ownerdraw of the grid button.  A singleton class implentation and usage. Continuing from the fifth article about sudoku.   Open the project in visual studio. Go to the class view – CGridButton should be visible as a class.  R…
Introduction: Dialogs (2) modeless dialog and a worker thread.  Handling data shared between threads.  Recursive functions. Continuing from the tenth article about sudoku.   Last article we worked with a modal dialog to help maintain informat…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now