Program example for time management functions
Compiler: Visual C++ Express Edition 2005
Compiled on Platform: Windows XP Pro SP2
Header file: Standard
Additional library: none/default
Additional project setting: Set project to be compiled as C
Project -> your_project_name Properties -> Configuration Properties -> C/C++ -> Advanced -> Compiled As: Compiled as C Code (/TC)
Other info: none
To do: Displaying time in various format
To show: Program example for time management functions
/* Playing with time. Program example for time management functions.
Many already deprecated, unsafe functions used here. You can try changing them to the safe versions */
#include <time.h>
#include <stdio.h>
#include <sys.h>
#include <string.h>
int main(void)
{
char buff[128], ampm[] = "AM";
__time64_t lgtime;
struct __timeb64 timstruct;
struct tm *today, *thegmt, xmas = {0, 0, 12, 25, 11, 90};
/* Set time zone from TZ environment variable. If TZ is not set,
* the operating system is queried to obtain the default value
* for the variable.*/
_tzset();
/* Get UNIX-style time and display as number and string. */
_time64(&lgtime);
printf("Time in seconds since UTC 1/1/70:\t%ld seconds\n", lgtime);
printf("UNIX time and date:\t\t\t%s", _ctime64(&lgtime));
/*Display UTC.*/
thegmt = _gmtime64(&lgtime);
printf("Coordinated universal time, UTC:\t%s", asctime(thegmt));
/* Display operating system-style date and time. */
_strtime(buff);
printf("OS time:\t\t\t\t%s\n", buff);
_strdate(buff);
printf("OS date:\t\t\t\t%s\n", buff);
/* Convert to time structure and adjust for PM if necessary. */
today = _localtime64(&lgtime);
if(today->tm_hour >= 12)
{
strcpy(ampm, "PM");
today->tm_hour -= 12;
}
/* Adjust if midnight hour. */
if(today->tm_hour == 0)
today->tm_hour = 12;
/* Pointer addition is used to skip the first 11 characters and printf() is used to trim off terminating characters.*/
printf("12-hour time:\t\t\t\t%.8s %s\n", asctime(today) + 11, ampm);
/* Print additional time information. */
_ftime64(&timstruct);
printf("Plus milliseconds:\t\t\t%u\n", timstruct.millitm);
printf("Zone difference in hours from UTC:\t%u hours\n", timstruct.timezone/60);
printf("Time zone name:\t\t\t\t%s\n", _tzname[0]);
printf("Daylight savings:\t\t\t%s\n", timstruct.dstflag ? "YES" : "NOT SET");
/* Make time for noon on Christmas, 1990. */
if(_mktime64(&xmas) != (__time64_t)-1)
printf("Christmas\t\t\t\t%s", asctime(&xmas));
/* Use time structure to build a customized time string. */
today = _localtime64(&lgtime);
/* Use strftime to build a customized time string. */
strftime(buff, 128, "Today is %A, day %d of %B in the year %Y.\n", today);
printf(buff);
return 0;
}
Output example:
Time in seconds since UTC 1/1/70: 1165933610 seconds
UNIX time and date: Wed Dec 13 00:26:50 2006
Coordinated universal time, UTC: Tue Dec 12 14:26:50 2006
OS time: 00:26:50
OS date: 12/13/06
12-hour time: 12:26:50 AM
Plus milliseconds: 890
Zone difference in hours from UTC: 4294967286 hours
Time zone name: E. Australia Standard Time
Daylight savings: NOT SET
Christmas Tue Dec 25 12:00:00 1990
Today is Wednesday, day 13 of December in the year 2006.
Press any key to continue . . .