21xrx.com
2024-12-22 21:05:03 Sunday
登录
文章检索 我的文章 写文章
C++时间戳实现
2023-06-28 10:15:46 深夜i     --     --
C++编程语言 时间戳 实现 时间格式转换 时间计算

时间戳是计算机系统中用于表示时间的一种表示方法,通常定义为距离某个固定时间点的秒数或毫秒数。在C++中,我们可以使用time_t类型来表示从1970年1月1日到某个时间点的秒数。

获取当前时间戳的方法是使用time函数,它返回一个time_t类型的值,表示当前时间距离1970年1月1日的秒数。例如:

time_t current_time;

current_time = time(NULL); // 获取当前时间戳

我们也可以通过指定tm结构体来获取指定时间点的时间戳,例如:

tm tm_time;

tm_time.tm_year = 2022 - 1900; // 年份为2022

tm_time.tm_mon = 1 - 1; // 月份为1月

tm_time.tm_mday = 1; // 日为1日

tm_time.tm_hour = 0; // 小时为0

tm_time.tm_min = 0; // 分钟为0

tm_time.tm_sec = 0; // 秒为0

time_t timestamp = mktime(&tm_time); // 获取时间戳

需要注意的是,tm结构体中的月份和日都是从0开始计数的。

将时间戳转换为日期时间格式可以使用localtime函数,它将time_t类型的时间戳转换成tm结构体,例如:

time_t timestamp;

struct tm* tm_time;

timestamp = time(NULL);  // 获取当前时间戳

tm_time = localtime(&timestamp); // 转换为tm结构体

cout << "当前时间为:" << tm_time->tm_year + 1900 << "-" << tm_time->tm_mon + 1 << "-" << tm_time->tm_mday << " "

  << tm_time->tm_hour << ":" << tm_time->tm_min << ":" << tm_time->tm_sec << endl;

如果要将时间戳转换为其他日期时间格式,可以使用strftime函数,例如:

time_t timestamp;

struct tm* tm_time;

timestamp = time(NULL);  // 获取当前时间戳

tm_time = localtime(&timestamp); // 转换为tm结构体

char buffer[80];

strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", tm_time);

cout << "当前时间为:" << buffer << endl;

这里,strftime中的格式参数可以根据需要进行调整,常用的格式参见下表:

|%a|星期几的缩写(如Sun)|

|%A|星期几的全称(如Sunday)|

|%b|月份的缩写(如Jan)|

|%B|月份的全称(如January)|

|%c|完整的日期和时间|

|%d|日期,以01-31的数字表示|

|%H|以24小时制表示小时,以00-23的数字表示|

|%I|以12小时制表示小时,以01-12的数字表示|

|%j|以01-366的数字表示年份中的天数|

|%m|月份,以01-12的数字表示|

|%M|分钟,以00-59的数字表示|

|%p|上午或下午的缩写(如AM或PM)|

|%S|秒,以00-59的数字表示|

|%U|以00-53的数字表示年份中的周数。以星期日为每周的第一天|

|%w|以0-6的数字表示星期几(以星期日为0)|

|%W|以00-53的数字表示年份中的周数。以星期一为每周的第一天|

|%x|完整的日期|

|%X|完整的时间|

|%y|以00-99的数字表示年份(两位数)|

|%Y|以四位数的数字表示年份。|

|%Z|时区名称|

|%%|百分号|

以上就是C++时间戳的基本实现方法,希望对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复