• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++11新特性,利用std::chrono精简传统获取系统时间的方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

传统的C++获取时间的方法须要分平台来定义。

相信百度代码也不少。

我自己写了下,例如以下。

const std::string getCurrentSystemTime()
{
	
	if (PLATFORM_ANDROID || PLATFORM_IOS)
	{
		struct timeval s_now;
		struct tm* p_tm;
		gettimeofday(&s_now,NULL);
		p_tm = localtime((const time_t*)&s_now.tv_sec);
		char date[60] = {0};
		sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
			(int)p_tm->tm_year + 1900,(int)p_tm->tm_mon + 1,(int)p_tm->tm_mday,
			(int)p_tm->tm_hour,(int)p_tm->tm_min,(int)p_tm->tm_sec);
		return std::string(date);
	}
	if (PLATFORM_W32)
	{
		struct tm* p_tm;
		time_t timep;
		time(&timep);
		p_tm = localtime(&timep);
		char date[60] = {0};
		sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
			(int)p_tm->tm_year + 1900,(int)p_tm->tm_mon + 1,(int)p_tm->tm_mday,
			(int)p_tm->tm_hour,(int)p_tm->tm_min,(int)p_tm->tm_sec);
		log("%s",date);
		return std::string(date);
	}
	return "";
}


二、C++11 std标准库跨平台方法

显然,我们注意到不同平台下的代码相似度非常高。那么能不能利用C++11里面的新特性,使得二者合并呢?

答案是肯定的。

非常easy的。代码例如以下:

const std::string getCurrentSystemTime()
{
	auto tt = std::chrono::system_clock::to_time_t
	(std::chrono::system_clock::now());
	struct tm* ptm = localtime(&tt);
	char date[60] = {0};
	sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
		(int)ptm->tm_year + 1900,(int)ptm->tm_mon + 1,(int)ptm->tm_mday,
		(int)ptm->tm_hour,(int)ptm->tm_min,(int)ptm->tm_sec);
	return std::string(date);
}

又短又简单有木有。

本文原创,如需转载,请说明出处:

http://blog.csdn.net/q229827701/article/details/41015483


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中的委托发布时间:2022-07-13
下一篇:
iOS开发——导入c文件引起的Unknowntypename'NSString'错误发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap