目前共有2篇帖子。 内容转换:不转换▼
 
点击 回复
423 1
【程序】time.h中函数的使用
一派护法 十九级
1楼 发表于:2016-5-21 13:32
#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;
}
一派护法 十九级
2楼 发表于:2016-5-21 13:32
【输出】
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

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:423 回复数:1
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-5-21 13:32
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。