巨大八爪鱼
武林盟主 二十一級
|
#include <stdio.h> #include <string.h> #include <time.h>
void display(struct tm *ptimeinfo) { printf("%d-%d-%d %d:%d:%d\n", ptimeinfo->tm_year + 1900, ptimeinfo->tm_mon + 1, ptimeinfo->tm_mday, ptimeinfo->tm_hour, ptimeinfo->tm_min, ptimeinfo->tm_sec); printf("Day of week: %d\n", ptimeinfo->tm_wday); }
void fun(void) { char *arr[] = {"日", "一", "二", "三", "四", "五", "六"}; // tm_wday为0表示星期日 struct tm info;
memset(&info, 0, sizeof(info)); // 将所有成员的值设为0 info.tm_year = 2013 - 1900; // 年份必须减去1900 info.tm_mon = 6 - 1; // 月份必须减1 info.tm_mday = 13; mktime(&info);
printf("\n2013年6月13日是星期%s\n", arr[info.tm_wday]); }
void fun2(void) { time_t t, now; struct tm info; double d; char str[100]; memset(&info, 0, sizeof(info));
info.tm_year = 2016 - 1900; info.tm_mon = 5 - 1; info.tm_mday = 11; t = mktime(&info);
time(&now); d = difftime(now, t); printf("d = %lf\n", d); printf("now - t = %d\n", now - t);
strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", &info); puts(str); }
int main(void) { struct tm timeinfo; // 时间信息结构 struct tm *ptimeinfo; time_t rawtime; // 时间戳整数 clock_t clk;
memset(&timeinfo, 0, sizeof(timeinfo)); // 成员变量全部置为0 timeinfo.tm_year = 115; // 2015年 timeinfo.tm_mon = 8; // 9月 timeinfo.tm_mday = 15; // 15日 timeinfo.tm_wday = 5; // 赋一个错误的星期数据: 星期五 printf("%s", asctime(&timeinfo)); // asctime会输出错误的星期数 // 注意返回的字符串末尾有换行符, 所以不能直接用puts输出
rawtime = mktime(&timeinfo); // mktime是localtime的反函数 printf("修正后的星期数: %d\n", timeinfo.tm_wday); // mktime会把结构体中错误的数据修正 printf("%s", ctime(&rawtime)); // ctime可以输出正确的星期数
puts("\nUTC+8 Time: "); rawtime += 27895; ptimeinfo = localtime(&rawtime); display(ptimeinfo);
puts("\nUTC Time: "); ptimeinfo = gmtime(&rawtime); display(ptimeinfo);
// 获得当前时间 time(&rawtime); // 另一种写法: rawtime = time(NULL); ptimeinfo = localtime(&rawtime); puts("\n当前时间: "); display(ptimeinfo);
fun();
clk = clock(); printf("clk = %d\n", clk);
fun2();
return 0; }
|
巨大八爪鱼
武林盟主 二十一級
|
【输出】 Fri Sep 15 00:00:00 2015 修正后的星期数: 2 Tue Sep 15 00:00:00 2015
UTC+8 Time: 2015-9-15 7:44:55 Day of week: 2
UTC Time: 2015-9-14 23:44:55 Day of week: 1
当前时间: 2016-5-21 13:32:4 Day of week: 6
2013年6月13日是星期四 clk = 2 d = 912724.000000 now - t = 912724 2016-05-11 00:00:00
|