[英]Converting string with datetime value to one with date and time in C/C++ on Visual Studio
我正在 Visual Studio 上开发一个 C++ 应用程序,其中我有一个包含日期时间值的字符串,我必须将其转换为另一个字符串,其日期和时间格式为 dd-mm-yyyy HH:MM:SS
例如,如果字符串 sDateTime 的值为“1643873040”,我必须获取另一个值为“02\/03\/2022, 08:24:00”的字符串 sDateAndTime
我还没有找到任何教程或论坛来解释如何在使用 Visual Studio 开发的 C 或 C++ 程序中进行这种转换,如果有任何帮助或建议,我将不胜感激。
您的值 1643873040 似乎是
Unix 时间<\/a>值,在 C 中称为
time_t<\/code> 。
将其转换为人类可读格式的第一步是使用函数
localtime<\/code><\/a> ,它返回一个指向“分解”时间结构
struct tm<\/code>的指针:
#include <stdio.h>
#include <time.h>
time_t t = 1643873040;
struct tm *tmp = localtime(&t);
由于我的起始数据是一个包含时间戳的字符串,因此我根据之前的答案尝试使用此代码解决它:
uint64_t timeStamp = 0;
char buf[80];
std::istringstream iss("1643873040");
iss >> timeStamp;
time_t t = timeStamp;
struct tm *tmp = localtime(&t);
char strbuf[30];
strftime(strbuf, sizeof(strbuf), "%Y-%m-%d %H:%M:%S", tmp);
printf("%s\n", strbuf);
我已经根据您的答案修改了前面的示例,现在它可以在 VisualStudio 中使用:
uint64_t timeStamp = 0;
std::istringstream iss("1550267535");
iss >> timeStamp;
time_t localTime = timeStamp;
struct tm timeInfo;
localtime_s(&timeInfo, &localTime);
printf ("%d-%02d-%02d %02d:%02d:%02d",
1900 + timeInfo.tm_year, timeInfo.tm_mon, timeInfo.tm_mday,
timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.