将时间戳字符串转换为格式"%d-%m-%Y"



我有一个unix时间戳std::string,我想把它转换成一个漂亮的日期字符串。已经提出的问题只显示了获取当前时间的对话(在所有地方都使用"自动",所以我不确定什么课程合适(,但是一个已经存在的std::字符串。

std::string beauty_date; //"%d-%m-%Y"
std::string stamp = "1567555200";
time_t stamp_as_time = (time_t) std::stoi(stamp);

我想这需要首先转换为一个无符号的长整型(也称为time_t(。我的问题是如何把";stamp_as_time";变为beauty_date。

提前感谢!

编辑:从评论来看,这是我用put_time 尝试的

std::string beauty_date; //"%d-%m-%Y"
std::string stamp = "1567555200";
time_t stamp_as_time = (time_t) std::stoi(stamp);
beauty_date = std::put_time(std::localtime(&stamp_as_time), "%d-%m-%Y");

这不太管用。

以下内容适用于您:

#include<iostream>
#include<iomanip>
#include<string>
#include<ctime>
int main() {
std::string ts_str{ "1567555200" };
std::int64_t result = std::stoi(ts_str);
std::time_t tmp = result;
std::tm* t = std::gmtime(&tmp);
std::cout << std::put_time(t, "%d-%m-%Y") << std::endl;
return 0 ;
}

演示

或者,如果您想将其放入beauty_date:

std::stringstream ss;
ss << std::put_time(t, "%d-%m-%Y");
beauty_date = ss.str();

最新更新