c++ 11 多种格式时间转化为字符串

1.打印系统当前时间,或者将系统当前时间转化为字符串

#include <iostream>
#include <sstream>
#include <iomanip>
#include <chrono>

int main()
{
	//打印到标准输出
	auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
	std::cout  << std::put_time(std::localtime(&t), "%F %T") << std::endl;

	//转为字符串
	std::stringstream ss;
	ss << std::put_time(std::localtime(&t), "%F %T");
	std::string str = ss.str();

	return 0;
}

运行截图:

代码讲解:

(1)%F %T 是格式化字符串,其中%F 代表 年-月-日 的组合。%T 代表 时:分:秒的组合

         %F %T 等价于 %Y-%m-%d %H:%M:%S。 更加细粒度的控制,可以自己对应组合(%Y,%m...分别对应年月日时分秒,怎么控制输出随便你)。比如现在我只需要打印 时-分 这样的格式,换成 %H - %M 即可

一般记住这几个常用的格式就够应付大多数场景了,更全面的格式请参考

(2)关于chrono::system_clock的详细讲解,前看前文

 

2.将time_t 类型,或者 long long 类型代表的秒数转换为字符串

有时候我们和其他的函数,甚至其他语言交互的时候,对方向你抛出一个time_t 类型的时间,或者long long类型的时间,现在需要我们转换为字符串。别慌,请看下面示例:

#include <iostream>
#include <iomanip>
#include <chrono>

int main()
{
	//从1970年1月1日00:00:00所经过的秒数
	long long seconds = 1532581415;
	std::time_t t(seconds);
	std::cout << std::put_time(std::localtime(&t), "[%F %T]") << std::endl;
	return 0;
}

运行截图:

代码讲解:

【注意】: long long seconds 一定要是秒数。(如果是毫秒那就除以1000 转为秒咯,其他类似转),不然转换为std::time_t 就失败了。其他和前一个示例一样。

总结:

以前总是看别的语言 DateTime::toString("yyyy.MM.dd hh:mm:ss.zzz ddd")啥的非常方便格式化时间,现在c++ 11也可以啦,只要自己稍微封装下就好了。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值