直接看代码吧,需要细节,建议自己对照代码去学习
#define _CRT_SECURE_NO_WARNINGS // localtime()需要这个宏。
#include<iostream>
#include<chrono>
#include<iomanip>
#include<sstream>
#include<ctime>
using namespace std;
int main(){
//(1)返回系统当前时间的时间点time_point
auto tp = chrono::system_clock::now();
//(2)将time_point转换成time_t类型
auto tt = chrono::system_clock::to_time_t(tp);
//(3)localtime把time_t类型转换成本地时间(北京时间)
//注意:localtime不是线程安全的,vs用localtime_s代替,linux用localtime_r代替
auto lt = std::localtime(&tt);
//格式化输出lt的结构体成员
cout << std::put_time(lt, "%Y-%m-%d %H:%M:%S") << endl;
//实际开发中一般会把时间结构体转换成字符串先
std::ostringstream oss;
string str_t;
oss << std::put_time(lt, "%Y-%m-%d %H:%M:%S"); //格式化把时间输出到ss中
str_t = oss.str(); //把输出流转返回string
cout << str_t << endl;
//上面是把时间点转换成字符串,这里把字符串转换成时间点,反着走
struct tm t_m;
time_t t_t;
std::chrono::system_clock::time_point t_p;
//(1)把字符串时间变成tm结构体
std::istringstream iss(str_t);
ss >> std::get_time(&t_m, "%Y-%m-%d %H:%M:%S");
//(2)把tm结构体变成t_t类型
t_t = std::mktime(&t_m);
//(3)把time_t变成time_point类型
t_p = chrono::system_clock::from_time_t(t_t);
return 0;
}