C++ time.h 使用

2018-10-17  本文已影响162人  谢小帅

头文件

#include <ctime>

1. 计算并格式化当前时间

// 计算当前时间
void getCurrentTime() {

    // 获取当前时间,现在时间减去1900年1月1日0时0分0秒,以秒为单位
    time_t timer = time(0);
    cout << timer << endl; // 1539742144

    // ctime: time_t -> str,字符串的格式为: Www Mmm dd hh:mm:ss yyyy
    char *stime = ctime(&timer);
    cout << stime << endl; // Wed Oct 17 10:09:04 2018

    // localtime: time_t -> struct
    struct tm *t = localtime(&timer);

    // 日期
    cout << t->tm_year + 1900 << "/" << t->tm_mon + 1 << "/" << t->tm_mday << endl; // 2018/10/17

    // 时间
    cout << t->tm_hour << ":" << t->tm_min << ":" << t->tm_sec << endl; // 10:9:4

    // 天数
    cout << t->tm_wday << endl; // 3,   day since Sunday = 0
    cout << t->tm_yday << endl; // 289, day since 1月1日

    // strftime 传入 struct tm *t
    char buffer[64];
    strftime(buffer, sizeof(buffer), "Now is %Y/%m/%d %H:%M:%S", t); // Now is 2018/10/17 10:09:04
    cout << buffer << endl;
}
1539742449
Wed Oct 17 10:14:09 2018

2018/10/17
10:14:9
3
289
Now is 2018/10/17 10:14:09

2. 计算两个时间差 difftime() 函数

// 计算两个时间差 difftime函数
void timeDiff() {

    // 初始化 struct tm
    struct tm t1 = { 0 };
    struct tm t2 = { 0 };

    // 现在时间 2018,10,16
    t1.tm_year = 2018 - 1900;
    t1.tm_mon = 9; // 从0开始
    t1.tm_mday = 21;

    // 高考时间 2019,6,7
    t2.tm_year = 2019 - 1900;
    t2.tm_mon = 5;
    t2.tm_mday = 7;

    double seconds = difftime(mktime(&t2), mktime(&t1)); // 转换结构体为time_t, difftime,计算时间差 单位为秒

    cout << seconds / 86400 << endl; // 最后输出时间, 因为一天有86400秒(60*60*24)
}
229

Full Code

#include <iostream>  
#include <ctime>

using namespace std;

void getCurrentTime();

void timeDiff();

int main() {

    // getCurrentTime();
    
    timeDiff();

    return 0;
}



// 计算当前时间
void getCurrentTime() {

    // 获取当前时间,现在时间减去1900年1月1日0时0分0秒,以秒为单位
    time_t timer = time(0);
    cout << timer << endl; // 1539742144

    // ctime: time_t -> str,字符串的格式为: Www Mmm dd hh:mm:ss yyyy
    char *stime = ctime(&timer);
    cout << stime << endl; // Wed Oct 17 10:09:04 2018

    // localtime: time_t -> struct
    struct tm *t = localtime(&timer);

    // 日期
    cout << t->tm_year + 1900 << "/" << t->tm_mon + 1 << "/" << t->tm_mday << endl; // 2018/10/17

    // 时间
    cout << t->tm_hour << ":" << t->tm_min << ":" << t->tm_sec << endl; // 10:9:4

    // 天数
    cout << t->tm_wday << endl; // 3,   day since Sunday = 0
    cout << t->tm_yday << endl; // 289, day since 1月1日

    // strftime 传入 struct tm *t
    char buffer[64];
    strftime(buffer, sizeof(buffer), "Now is %Y/%m/%d %H:%M:%S", t); // Now is 2018/10/17 10:09:04
    cout << buffer << endl;
}


// 计算两个时间差 difftime函数
void timeDiff() {

    // 初始化 struct tm
    struct tm t1 = { 0 };
    struct tm t2 = { 0 };

    // 现在时间 2018,10,16
    t1.tm_year = 2018 - 1900;
    t1.tm_mon = 9; // 从0开始
    t1.tm_mday = 21;

    // 高考时间 2019,6,7
    t2.tm_year = 2019 - 1900;
    t2.tm_mon = 5;
    t2.tm_mday = 7;

    double seconds = difftime(mktime(&t2), mktime(&t1)); // 转换结构体为time_t, difftime,计算时间差 单位为秒

    cout << seconds / 86400 << endl; // 最后输出时间, 因为一天有86400秒(60*60*24)
}
上一篇 下一篇

猜你喜欢

热点阅读