21xrx.com
2024-09-20 00:04:36 Friday
登录
文章检索 我的文章 写文章
C++实现时间字符串转时间戳
2023-07-04 08:57:24 深夜i     --     --
C++ 时间字符串 时间戳 转换 实现

在编程中,我们常常需要将时间字符串转换为时间戳,以便进行时间计算和比较。时间戳是指自1970年1月1日起经过的秒数,通常在计算机系统中使用。

C++提供了一种方便的方法来实现时间字符串转时间戳的功能。我们可以使用标准库中的“时间和日期库”来实现这个功能。

步骤1:包含头文件

我们需要包含头文件 来使用时间和日期库和字符串。


#include <ctime>

#include <string>

步骤2:定义时间字符串

把时间字符串存储在一个std::string类型的变量中。我们需要注意的是,时间字符串需要遵循一定的格式,如“2022-08-05 12:30:00”。


std::string time_string = "2022-08-05 12:30:00";

步骤3:将时间字符串转换为时间结构体

使用std::tm结构体将时间字符串转换为时间。


std::tm time_struct = {};

sscanf(time_string.c_str(), "%d-%d-%d %d:%d:%d",

    &time_struct.tm_year,

    &time_struct.tm_mon,

    &time_struct.tm_mday,

    &time_struct.tm_hour,

    &time_struct.tm_min,

    &time_struct.tm_sec);

步骤4:将时间结构体转换为时间戳

使用std::mktime函数将时间结构体转换为时间戳。


std::time_t time_stamp = std::mktime(&time_struct);

现在,我们已经成功地将时间字符串转换为了时间戳。

完整代码如下:


#include <ctime>

#include <string>

int main() {

  // Step 1: Include header files.

  std::string time_string = "2022-08-05 12:30:00";

  // Step 2: Convert time string to time struct.

  std::tm time_struct = {};

  sscanf(time_string.c_str(), "%d-%d-%d %d:%d:%d",

      &time_struct.tm_year,

      &time_struct.tm_mon,

      &time_struct.tm_mday,

      &time_struct.tm_hour,

      &time_struct.tm_min,

      &time_struct.tm_sec);

  // Step 3: Convert time struct to time stamp.

  std::time_t time_stamp = std::mktime(&time_struct);

  

  return 0;

}

在实际应用中,我们可以将该函数打包成一个函数,以方便调用。例如:


#include <ctime>

#include <string>

std::time_t to_time_stamp(const std::string& time_string) {

  std::tm time_struct = {};

  sscanf(time_string.c_str(), "%d-%d-%d %d:%d:%d",

      &time_struct.tm_year,

      &time_struct.tm_mon,

      &time_struct.tm_mday,

      &time_struct.tm_hour,

      &time_struct.tm_min,

      &time_struct.tm_sec);

  return std::mktime(&time_struct);

}

int main() {

  std::string time_string = "2022-08-05 12:30:00";

  std::time_t time_stamp = to_time_stamp(time_string);

  return 0;

}

总之,使用C++将时间字符串转换为时间戳非常简单。通过使用时间和日期库,我们可以轻松地完成这个任务。

  
  

评论区

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