如何用time_t改变日期和时间的格式?
How to change the format of date and time with time_t?
time_t now = time(0);
std::string h = std::string (ctime (&now));
std::cout << "\nh: " << h;
我收到的当前输出是:Thu Sep 14 10:58:26 2017
我希望输出为 2017-08-26-16-10-56
我可以对该输出做什么?
使用strftime,像这样:
strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);
完整代码:
#include <cstdio>
#include <ctime>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);
puts (buffer);
return 0;
}
输出:
2017-09-14-14-41-19
#include <iomanip>
time_t now = time(0);
std::string h = std::put_time(localtime(&now), "%F-%H-%M-%S");
std::cout << "\nh: " << h;
输出
h: 2017-09-14-05-54-02
更好的是,使用std::chrono
#include <iostream>
#include <iomanip>
#include <chrono>
using namespace std;
int main() {
auto now = chrono::system_clock::to_time_t(chrono::system_clock::now());
cout << put_time(localtime(&now), "%F-%H-%M-%S") << endl;
return 0;
}
time_t now = time(0);
std::string h = std::string (ctime (&now));
std::cout << "\nh: " << h;
我收到的当前输出是:Thu Sep 14 10:58:26 2017
我希望输出为 2017-08-26-16-10-56
我可以对该输出做什么?
使用strftime,像这样:
strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);
完整代码:
#include <cstdio>
#include <ctime>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);
puts (buffer);
return 0;
}
输出:
2017-09-14-14-41-19
#include <iomanip>
time_t now = time(0);
std::string h = std::put_time(localtime(&now), "%F-%H-%M-%S");
std::cout << "\nh: " << h;
输出
h: 2017-09-14-05-54-02
更好的是,使用std::chrono
#include <iostream>
#include <iomanip>
#include <chrono>
using namespace std;
int main() {
auto now = chrono::system_clock::to_time_t(chrono::system_clock::now());
cout << put_time(localtime(&now), "%F-%H-%M-%S") << endl;
return 0;
}