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)
上一篇 2022年2月4日 下午1:00
下一篇 2022年2月4日 下午2:00


相关推荐

  • 456个极简主义摄影Midjourney AI提示词模板 456 Midjourney Prompts For Minimalist Photography

    456个极简主义摄影Midjourney AI提示词模板 456 Midjourney Prompts For Minimalist Photography

    2026年3月15日
    3
  • 中兴F450光猫设置桥接_电信光猫改桥接后上不了网络

    中兴F450光猫设置桥接_电信光猫改桥接后上不了网络前几天突然想搞外网访问,但是电信这款光猫DMZ不能用让我很愁,后来经过一番了解可以让光猫只负责光数转换,剩下的事情交给路由,但是要把光猫设置成桥接模式这个光猫比较特殊不需要进入超级管理员只需要下面这个链接:http://192.168.1.1:8080/bridge_route.gch会出现这个页面,点击桥接复原就行,我是已经点过了,所以置灰了。…

    2022年10月8日
    8
  • 如何在CentOS上配置虚拟IP地址 (VIP)

    如何在CentOS上配置虚拟IP地址 (VIP)目录介绍教程第1步第2步第3步第4步第5步本教程将指导您如何在服务器上配置虚拟IP地址。介绍顾名思义,虚拟IP地址(VIP)是一个没有实际物理网络接口的IP地址。传入的数据包被发送到VIP,但所有数据包都通过真实的网络接口传输。虚拟IP地址通常用于数据库高可用性。应用程序将其用于数据库连接,而不是普通的主机IP地址。当活动数据库失败时,VIP将转移到新升…

    2022年10月20日
    6
  • 《大话数据结构》目录[通俗易懂]

    《大话数据结构》目录[通俗易懂]由于目录中有比较复杂的格式,所以只能用PDF的形式提供。http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf

    2022年6月24日
    37
  • Java拉姆达表达式

    Java拉姆达表达式语法 lambda 表达式的重要特征变量作用域

    2026年3月16日
    2
  • C控制台应用程序

    C控制台应用程序使用 C 创建控制台应用程序的基本步骤 1 创建项目 2 编辑 C 源代码 3 编译运行 例题 在控制台输出 Helloworld 第一步 文件 新建 项目 选择 项目类型 为 VisualC 模板 为控制台应用程序 输入名称 例 1 1 选择存放路径 H C 程序 选择 创建新解决方案 第二步 编辑代码并保存

    2026年3月18日
    2

发表回复

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

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