Linux時間和字元轉換函式
阿新 • • 發佈:2019-02-03
//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); }