Solved

Need to get system date/time

Posted on 1998-05-15
3
754 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
ID: 1293433
#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
ID: 1293434
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
ID: 1293435
#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

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Doc'in system (example?) BA 7 109
countEvens challenge 2 99
haveThree challenge 22 118
Modbus - whats the maximum I can store in one register? 4 79
Introduction: Displaying information on the statusbar.   Continuing from the third article about sudoku.   Open the project in visual studio. Status bar – let’s display the timestamp there.  We need to get the timestamp from the document s…
If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
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 shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

776 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