#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. python的一些基本的建议

    一.编码风格 python程序要写的易于阅读 二.python代码的样式规则 遵循PEP8 4个spaces是一次缩排,不允许tabs,不允许混合使用space和tab,方法之间要有一个空行,类之间要 ...

  2. 转 HTTP/2: The Long-Awaited Sequel

    HTTP/2: The Long-Awaited Sequel Thursday, October 9, 2014 2:01 AM 6 Ready to speed things up? Here a ...

  3. [LeetCode系列] K节点倒序问题迭代解法

    给定链表和整数k, 使用in-space方法将链表按k个为一组进行倒序, 如果剩余个数不足k个则保留其原始顺序. 如给定1->2->3->4->5, k = 2, 需要返回 2 ...

  4. (转)性能分析之-- JAVA Thread Dump 分析综述

    原文链接:http://blog.csdn.net/rachel_luo/article/details/8920596 最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相 ...

  5. 5.Appium+真机Demo

    1.连接真机后,执行代码时出现错误:A new session could not be created. (Original error: Could not extract PIDs from p ...

  6. redis Linux 、Windows ubuntu 下的安装

    Redis 安装 2018-07-05 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 ...

  7. [Android] 开发第五天

    布之前开发的 Android 电话拨号器 Android-Studio 已经带了发布菜单, Build -> Generate Signed APK 进入发布界面 我们新增一个证书,或者使用已有 ...

  8. Script_Notepad++如何调试VBS脚本

    一.NotePad++安装 1. 下载并安装Notepad++,安装步骤一路Next就可以了. 二.NppExec插件安装和配置 1. 下载并解压 NppExec_041_dll_Unicode.zi ...

  9. @JsonIgnore的源码说明

    @JsonIgnore不仅仅是在getter上有影响,也对setter方法有影响: 所在包:com.fasterxml.jackson.annotation; 源码: import java.lang ...

  10. Maven - Deploy war in Tomcat 7 & 8

    This article will explain on how to deploy a war fine in to Tomcat 7 through maven build. Note : I h ...