将时间戳字符串转换为格式“%d-%m-%Y”
Convert timestamp string to format "%d-%m-%Y"
我有一个 unix 时间戳 std::string,我想将它转换成一个漂亮的日期字符串。
已经问过的问题只显示获取当前时间的转换(并在所有地方使用“自动”,所以我不确定什么 class 是合适的)但是这个
是一个已经存在的 std::string.
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();
我有一个 unix 时间戳 std::string,我想将它转换成一个漂亮的日期字符串。 已经问过的问题只显示获取当前时间的转换(并在所有地方使用“自动”,所以我不确定什么 class 是合适的)但是这个 是一个已经存在的 std::string.
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();