#pragma once
#include <chrono>
#include <string>
#include <iostream>
#include <ctime>
#include <iomanip> #define NAMESPACE(x) namespace x{
#define NAMESPACEEND(x) } NAMESPACE(DEF) const int kMicroSecondsPerSecond = 1000 * 1000; class Timestamp
{
public:
Timestamp() {};
void TimestampSet(const Timestamp& t) {
time_ = t.time_;
}; bool valid() const { return time_.time_since_epoch().count() > 0; }
int64_t MicroSecondsSinceEpoch() const { return time_.time_since_epoch().count(); }
void Now() { time_ = std::chrono::system_clock::now();};
std::string Timestamp::ToFormattedString() const;
std::string ToString() const {
char buf[32] = { 0 };
auto s1 = std::chrono::duration_cast<std::chrono::microseconds>
(time_.time_since_epoch()).count();
snprintf(buf, sizeof(buf) - 1, "%lld.%06lld", s1 / kMicroSecondsPerSecond, s1 % kMicroSecondsPerSecond);
//printf("buf %s\n", buf);
return buf;
};
const std::chrono::time_point<std::chrono::system_clock>&
Time() { return time_; };
private:
std::chrono::time_point<std::chrono::system_clock> time_;
}; inline bool operator<(Timestamp lhs, Timestamp rhs)
{
return lhs.Time() < rhs.Time();
} inline bool operator==(Timestamp lhs, Timestamp rhs)
{
return lhs.Time() == rhs.Time();
} inline bool operator>(Timestamp lhs, Timestamp rhs)
{
return lhs.Time() > rhs.Time();
} inline bool operator>=(Timestamp lhs, Timestamp rhs)
{
return lhs.Time() >= rhs.Time();
} inline int64_t timeDifference(Timestamp high, Timestamp low)
{
return (high.Time() - low.Time()).count();
} std::string Timestamp::ToFormattedString() const
{
auto t = std::chrono::system_clock::to_time_t(time_); char mbstr[100] = {0};
if (std::strftime(mbstr, sizeof(mbstr), "%Y_%m_%d_%H_%M_%S", std::localtime(&t)))
{
return mbstr;
} return mbstr;
} NAMESPACEEND(DEF)
/**************************************************************
技术博客
http://www.cnblogs.com/itdef/
 
技术交流群
群号码:324164944
 
欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
**************************************************************/

c11时间库一个小例子的更多相关文章

  1. MVVM模式的一个小例子

    使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...

  2. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  3. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  4. 使用Trinity拼接以及分析差异表达一个小例子

    使用Trinity拼接以及分析差异表达一个小例子  2017-06-12 09:42:47     293     0     0 Trinity 将测序数据分为许多独立的de Brujin grap ...

  5. 关于SVN配置文件的一个小例子

    1   背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...

  6. 从一个小例子认识SQL游标

    1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序 ...

  7. Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

    学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看 ...

  8. Spring和Hibernate结合的一个小例子

    1.新建一个SpringHibernate的maven项目 2.pom文件的依赖为 <dependency> <groupId>junit</groupId> &l ...

  9. Spring.Net在ASP.NET Mvc里使用的一个小例子

    就贴个小例子,就不注意格式了. 1.下载dll NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget 在vs的NuGet里 ...

随机推荐

  1. .NET移动开发环境搭建

    开发工具:Xamarin Studio 社区版 下载地址 http://www.monodevelop.com/download/ 操作系统要求:Windows7及以上..NET Framework4 ...

  2. 归并排序(C语言)

    合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法. 它的基本思想就是假设数组A有N个元素,那么可以看成 ...

  3. jdbc-DAO的实现

    什么是 DAO DAO(Data Access Object)是一个数据访问接口,夹在业务逻辑与数据库资源中间. 在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有 ...

  4. An internal error occurred during: "Android Library Update".

    打开 proj.android下的.cproject文件,把多余的CConfiguration配置节删掉,只留第一个就行了.

  5. 二:状压dp

    一:状压dp的基本特征 状态压缩问题一般是指用十进制的数来表示二进制下的状态 这种用一个数来表示一组数,以降低表示状态所需的维数的解题手段,就叫做状态压缩. 常用到位运算 二:位运算 &:与运 ...

  6. HDFS 和 YARN 的 HA 故障切换【转】

    来源:https://blog.csdn.net/u011414200/article/details/50336735 一 非 HDFS HA 集群转换成 HA 集群二 HDFS 的 HA 自动切换 ...

  7. php的静态变量的实现

    1.静态变量的结构 php脚本编译之后会生成执行opcode组成的opcode_array,执行每个zend_op_array都会生成一个单独的zend_execute_data结构. php的局部变 ...

  8. 使用anaconda安装tensorflow (windows10环境)

    版权声明:勤学 修德 明辨 笃实 - CSDN周雄伟 https://blog.csdn.net/ebzxw/article/details/80701613 已有环境:python3.7.1 ana ...

  9. SlickEdit V21 2016 破解教程,win linux mac

    最近主要工作系统转到LInux上面来了,Slickedit的安装破解也费了些事,今天将过程整理一下做个记录. 说明:SlickEdit pro V21.03 Linux 64位实测可用,MAC实测可用 ...

  10. 解决phpexcel保存时文件命中文出现 乱码 (这个真的有用)

    Phpexcel导出Excel文件时有两个主要的过程: 1.定义文件名 2.填充Excel数据 这两个过程中可能会出现一些乱码问题,下面我来说一下解决办法: 解决文件名的乱码: 乱码原因:客户使用的中 ...