//linux操作系统提供的时间操作函数。
时间操作函:
/*
* date +%s -d '2004/06/04 20:30:00' //将时间转换成毫秒数。
*
int gettimeofday(struct timeval *tv, struct timezone *tz);
char *asctime(const struct tm *tm);
char *asctime_r(const struct tm *tm, char *buf);
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
struct tm *gmtime(const time_t *timep);
struct tm *gmtime_r(const time_t *timep, struct tm *result);
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
*/
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
time_t time(time_t *t);
truct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
int gettimeofday(struct timeval *tv, struct timezone *tz);
//以上两个函数是用来获取当前系统时间的秒数的。 gettimeofday()方法可以获取当前系统时间的毫秒值。
//将该毫秒值转换成可读的字符格式日期的方法如下:
ctime(time_t * time); //直接输出当前本地时间字符串格式。
time()-->gmtime(time_t *time) --> 得到一个 struct tm{} -->asctime(tm *tm);得到时间格式化字符串。得到的时间不是本地时间。
time()-->gmtime(time_t *time) --> 得到一个 struct tm{} -->strftime() //得到一个自己格式话的一个时间字符串
gettimeofday()-->localtime(time_t *time)-->得到一个struct tm{}-->asctime(struct tm *t) //得到一个时间日期字符串。
gettimeofday()-->localtime(time_t *time)-->得到一个struct tm{}-->strftime(struct tm * t) //得到一个时间日期字符串
mktime(struct tm * t) //可以通过这个将tm结构提转换成一个time_t,当前时间的秒值。
下面是相关的程序demo:
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<time.h>
void main(void)
{
struct timeval t;
int result;
char *ct=NULL;
char *asct = NULL;
struct tm *t1 = NULL;
char timearray[100] = {'\0'};
struct timeb;
result = gettimeofday(&t,NULL);
if(result < 0 )
{
perror("gettimeofday()");
exit(1);
}
ct = ctime(&t.tv_sec);
printf("ct = %s \r\n", ct);
//ctime(time_t * t); 和localtime(time_t *t), mktime(tm) (strftime() 格式化字符输出时间。)
//这四个函数都受到环境变量TZ的影响。
t1 = gmtime(&t.tv_sec);
t1 = localtime(&t.tv_sec);
printf("t1->hours = %d",t1->tm_hour);
// strftime(timearray, 100, "%Y-%m-%d %H:%M:%S", t1);
// strftime(timearray, 100, "%Y-%m-%d %X", t1);
// strftime(timearray, 100, "%Y-%m-%d %T", t1);
strftime (timearray,sizeof(timearray),"Now is %Y/%m/%d %H:%M:%S",t1);
printf("%s \r\n",timearray);
asct = asctime(t1);
printf("asct = %s", asct);
}