贡献者: addis
std::time_t 结构是一个表示时间的一个数字类型(几乎总是整型)的 typedef。几乎总是用于表示从 1970 年 1 月 1 日 UTC(epoch)起流逝的秒数(不包含增加的几个闰秒)。
std::tm 结构(参考)代表一个人类可读的时间格式(数值取决于时区和是否夏令时),是从 C 语言迁移过来的,成员如下
tm_year 年份四位数减去 1900
tm_mon 月份减去 1
tm_mday 日 [1,31]
tm_hour 小时 [0,23]
tm_min 分钟 [0,59]
tm_sec 秒 [0,60]
tm_wday 周几(0 代表周日)[0-6]
tm_yday 一年中的第一天(0 代表 1/1)[0, 365]
tm_isdst 是否是夏令时 (DST) 若大于零则有 DST,零则非 DST,负数则无信息
std::time_t now = std::time(nullptr); 获取当前时间(如果电脑时间和时区正确,返回值与时区无关)。返回值一定是 epoch 起流逝的秒数(不包含增加的几个闰秒)。
std::time_t mktime(std::tm* time); 可以从 std::tm 转换为 time_t(结合计算机上的时区信息)。
std::tm* localtime(const std::time_t *time); 可以从 time_t 转换为 std::tm(结合计算机上的时区信息)。是 mktime 的反函数。
std::tm* gmtime(const std::time_t *time); 可以把 timt_t 转换为 GMT/UTC+0 时区的 std::tm(结合计算机上的时区信息)。
localtime() 和 gmtime() 的结果可以获得计算机的时区(注意时区未必是整数或者是半整数)。
ss >> get_time(std::tm *t, "%Y 年 %m 月 %d 日 %H 时 %M 分 %S 秒") 可以把 istringstream 中的字符串 parse 到 std::tm 结构。完了以后如果 ss.fail() 就是 parse 失败。
ss << put_time(const std::tm* t, "%Y-%m-%d %H:%M"); 可以把 std::tm 变为指定格式的字符串传给 ostringstream。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利