21xrx.com
2024-06-03 01:58:55 Monday
登录
文章检索 我的文章 写文章
如何在C++中实现时间和字符串之间的转换?
2023-07-05 02:53:19 深夜i     --     --
C++ 时间 字符串 转换 实现

在C++中,我们经常需要将时间和字符串互相转换,以方便我们在编程过程中进行时间和日期的操作。下面将介绍如何在C++中实现时间和字符串之间的转换。

1. 将时间转换为字符串

在C++中,我们可以使用strftime()函数将时间转换为字符串。该函数需要三个参数:第一个参数是目标字符串缓冲区的指针,第二个参数是缓冲区大小,第三个参数是格式化字符串,用于指定时间的输出格式。

下面的示例代码将当前时间转换为字符串,并输出到屏幕上:


#include <iostream>

#include <ctime>

using namespace std;

int main()

{

  time_t now = time(0);

  char buf[80];

  strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&now));

  cout << buf << endl;

  return 0;

}

输出结果为:2021-10-14 14:30:20

2. 将字符串转换为时间

在C++中,我们可以使用strptime()函数将字符串转换为时间。该函数需要两个参数:第一个参数是待转换的字符串,第二个参数是格式化字符串,用于指定字符串的输入格式。

下面的示例代码将字符串转换为时间,并输出时间戳:


#include <iostream>

#include <ctime>

using namespace std;

int main()

{

  string str_time = "2021-10-14 14:30:20";

  struct tm t;

  strptime(str_time.c_str(), "%Y-%m-%d %H:%M:%S", &t);

  time_t time = mktime(&t);

  cout << time << endl;

  return 0;

}

输出结果为:1634213420

3. 转换时区

如果需要将某一时区的时间转换为另一时区的时间,可以使用gmtime()和localtime()函数。

gmtime()函数将时间转换为UTC时间(世界标准时间),而localtime()函数将时间转换为本地时间。

下面的示例代码将本地时间转换为UTC时间,并输出时间戳:


#include <iostream>

#include <ctime>

using namespace std;

int main()

{

  time_t now = time(0);

  struct tm *ltm = localtime(&now);

  struct tm *gtm = gmtime(&now);

  time_t utc_time = mktime(gtm);

  cout << "Local Time: " << asctime(ltm);

  cout << "UTC Time:  " << asctime(gtm);

  cout << "UTC Time (timestamp):  " << utc_time << endl;

  return 0;

}

输出结果为:

Local Time: Thu Oct 14 14:30:20 2021

UTC Time:  Thu Oct 14 06:30:20 2021

UTC Time (timestamp):  1634190620

总结

本文介绍了在C++中实现时间和字符串之间的转换的方法,包括将时间转换为字符串、将字符串转换为时间和转换时区。这些方法在我们进行时间和日期操作时十分有用,希望能对大家有所帮助。

  
  

评论区

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