程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言 時間函數的學習和總結,c語言函數總結

C語言 時間函數的學習和總結,c語言函數總結

編輯:關於C語言

C語言 時間函數的學習和總結,c語言函數總結


一直都是以簡單的time_t t,time(&t),ctime(&t)來表示時間,後來要以時間為日志文件的名字時,就有點蒙逼了。學習一下。   tm結構: struct tm {        int tm_sec; /* 秒 – 取值區間為[0,59] */        int tm_min; /* 分 - 取值區間為[0,59] */        int tm_hour; /* 時 - 取值區間為[0,23] */        int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */        int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */        int tm_year; /* 年份,其值等於實際年份減去1900 */        int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */        int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */        int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/ } 獲取當地時間的函數 :struct tm *localtime(const time_t * timep); 獲得格林威治時間的函數:struct tm *gmtime(const time_t *timep);,兩個函數的用法是一樣的,以localtime為例子說明 #include <time.h> int main() {     char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};     time_t timep;     struct tm *p;     time(&timep);     p = localtime(&timep); //取得當地時間     printf ("%d/%d/%d ", (1900+p->tm_year), (l+p->tm_mon), p->tm_mday);     printf("%s%d:%d:%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec); } 執行結果 2016/06/3 Fri 21:25:34   也有轉換成標准格式的函數size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h>   int main(int argc, char **argv)  {      time_t t;      struct tm *lt;      char nowtime[24];        t = time(NULL);      lt = localtime(&t);        memset(nowtime, 0, sizeof(nowtime));      strftime(nowtime, sizeof(nowtime), "%Y-%m-%d %H:%M:%S", lt);      printf("nowtime = %s\n", nowtime);      return 0;  } 輸出 nowtime = 2016-6-3 21:23:07 可選擇的格式有 %a 星期幾的簡寫   %A 星期幾的全稱   %b 月份的簡寫   %B 月份的全稱   %c 標准的日期的時間串   %C 年份的前兩位數字   %d 十進制表示的每月的第幾天   %D 月/天/年   %e 在兩字符域中,十進制表示的每月的第幾天   %F 年-月-日   %g 年份的後兩位數字,使用基於周的年   %G 年份,使用基於周的年   %h 簡寫的月份名   %H 24小時制的小時   %I 12小時制的小時   %j 十進制表示的每年的第幾天   %m 十進制表示的月份   %M 十時制表示的分鐘數   %n 新行符   %p 本地的AM或PM的等價顯示   %r 12小時的時間   %R 顯示小時和分鐘:hh:mm   %S 十進制的秒數   %t 水平制表符   %T 顯示時分秒:hh:mm:ss   %u 每周的第幾天,星期一為第一天 (值從1到7,星期一為1)   %U 第年的第幾周,把星期日作為第一天(值從0到53)   %V 每年的第幾周,使用基於周的年   %w 十進制表示的星期幾(值從0到6,星期天為0)   %W 每年的第幾周,把星期一做為第一天(值從0到53)   %x 標准的日期串   %X 標准的時間串   %y 不帶世紀的十進制年份(值從0到99)   %Y 帶世紀部分的十制年份   %z,%Z 時區名稱,如果不能得到時區名稱則返回空字符。   %% 百分號   獲取微秒級時間的方法int  gettimeofday(struct timeval *tv, struct timezone *tz),目前的時間用tv所指的結構返回,時區信息則存在tz所指的結構裡。 struct timeval {      long tv_sec;/秒/      long tv_usec;/微秒/ }; struct timezone {      int tz_minutestwest;/和格林威治時間差幾分鐘/      int tz_dsttime; } 一般運用時,置tz為空,只取tv的值。 #include <sys/time.h> #include <stdio.h> int main(void) {      int i;      struct timeval tv;           for(i = 0; i < 4; i++)      {           gettimeofday(&tv, NULL);           printf("%d\t%d\n", tv.tv_usec, tv.tv_sec);           sleep(1);      }        return 0; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved