localtime question

Mipam mipam at ibb.net
Wed Aug 11 01:44:42 PDT 2004


[SNIP]

> You'd have to use strftime() and a local buffer for that.

I found an example and adjusted it:

#include <time.h>
#include <stdio.h>

int main()
{
struct tm *ptr;
time_t tm;
char str[60];
char str2[60];
char str3[60];

tm = time(NULL)-86400;
ptr = localtime(&tm);
strftime(str ,100 , "%d",ptr);
strftime(str2 ,100 , "%m",ptr);
strftime(str3 ,100 , "%Y",ptr);
printf("%s %s %s\n",str3,str2,str);

return 0;
}

This runs just fine: 2004 08 10
I dont know what the 100 is good for?

I changed the first according your advice:

#include <sys/time.h>
#include <err.h>
#include <stdio.h>

int main(void)
{
struct timeval tv;
struct timeval tv_current;
if (gettimeofday(&tv_current, NULL) == -1)
        err(1, "Could not get local time of day");
tv.tv_sec = tv_current.tv_sec-86400;
printf("%s", ctime((const time_t *) &tv.tv_sec));
/* printf("%s\n", ctime(&tv.tv_sec)); */
return 0;
}
Output: Tue Aug 10 10:42:26 2004

I compiled both with: cc -O3 -mcpu=pentiumpro -o time time.c
Both compile without errors.
Bye,

Mipam.


More information about the freebsd-questions mailing list