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

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

大家好,又见面了,我是全栈君。

一、传统的获取系统时间的方法

传统的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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115435.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 如何跳过MVC中的ValidateRequest验证

    如何跳过MVC中的ValidateRequest验证
    MVC中客户端传值到服务器端时,如果客户端字符串含有““字样时就会报“检测到有潜在危险”的错误。
    如:从客户端(“test
    ttt”)中检测到有潜在危险的Request.Form值。
    解决办法:在对应的ActionResult前面加上[ValidateInput(false)]就可以解决,去除验证。

     
    下面是一个富文本的页面源码示例:
    <%@PageLanguage="C#"MasterPageFile="~/V

    2022年5月18日
  • mysql 长连接

    mysql 长连接

    2021年9月6日
  • Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    2021年10月24日
  • vmware虚拟机上安装win7系统_window10 虚拟机

    vmware虚拟机上安装win7系统_window10 虚拟机文章目录一、前言二、VMware下载三、XP系统镜像下载四、创建XP虚拟机一、前言最近需要搞windows系统兼容测试,根据数据显示,目前市面上占比TOP3的系统如下:排名系统占比1win7sp159.25%2win1029.83%3xpsp38.87%4其他–没想到2021年了,xp系统还占了8.87%。我自己本机是win10,不想安装双系统,决定弄个xp虚拟机好了。在网上下载了一个xp的iso镜像文件,使用虚拟机加载却提示:

    2022年8月16日
  • mysql varchar列转成integer然后获取最大值。[通俗易懂]

    mysql varchar列转成integer然后获取最大值。[通俗易懂]https://blog.csdn.net/c_henjinxing521/article/details/51788963上面的大神写的办法可以。selectMAX(CAST(userNoasSIGNEDINTEGER))fromuserInfo;或者selectMAX(CAST(userNoasUNSIGNEDINTEGER))fromus…

    2022年9月3日
  • fstream的用法_fun 的用法

    fstream的用法_fun 的用法在C++中输入输出到指定文件,或者从指定文件中读出数据使用fstream类较为方便。C++中处理文件类似于处理标准输入和标准输出。类ifstream、ofstream(向文件中写入)和fstream分别从类istream、ostream和iostream派生而来。作为派生的类,它们继承了插入和提取运算符(以及其他成员函数),还有与文件一起使用的成员和构造函数。可将文件&lt;fstream&gt…

    2022年9月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号