方式一:
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
int main()
{
time_t tnow;
struct tm *tmnow;
time(&tnow);
tmnow = localtime(&tnow);
//usec
struct timeval tv;
if(gettimeofday(&tv,NULL)<0)
return 0;
printf("%d:%06d\n",tv.tv_sec,tv.tv_usec);
printf("%4d-%2d-%2d %02d:%02d:%02d week:%d\n",
(1990 + tmnow->tm_year),
(1 + tmnow->tm_mon),
tmnow->tm_mday,
tmnow->tm_hour,tmnow->tm_min,tmnow->tm_sec,
tmnow->tm_wday);
return 0;
}
方式二:
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
u_int64_t fromTimeval(const struct timeval* tv)
{
u_int64_t rval = 0;
if (tv)
{
// Please keep it this way or the compiler may break
rval = tv->tv_sec;
rval *= 1000000;
rval += tv->tv_usec;
}
return rval;
}
int main()
{
unsigned int s = 0;
unsigned int u = 0;
time_t sec = (time_t) s;
struct tm tmp;
struct timeval tv;
u_int64_t t = gettimeofday(&tv,0) ? 0 : fromTimeval(&tv);
s = (unsigned int) (t / 1000000);
u = (unsigned int) (t % 1000000);
sec = (time_t) s;
printf("sec = %d\n",sec);
localtime_r(&sec,&tmp);
printf("%04d-%02d-%02d %02d:%02d:%02d.%06u\n ",
(1990 + tmp.tm_year),
(1 + tmp.tm_mon),
tmp.tm_mday,
tmp.tm_hour, tmp.tm_min, tmp.tm_sec, u);
return 0;
}