timestamp

class timestamp:public mymuduo::copyable,
public boost::equality_comparable<timestamp>,
public boost::less_than_comparable<timestamp>
{
};

作用:

主要是实现了时间戳的相关操作,例如时间戳的格式化,返回当前时间戳等等。

成员变量:

private:
int64_t m_microSeconds;//数据成员,表示时间戳的微秒数
public:
  static const int microSecInSec=*;//1秒=1000*1000微妙

成员函数:

   timestamp():m_microSeconds();
//构造函数,设置mircroseconds值
explicit timestamp(int64_t ms):m_microSeconds(ms);
//交换两个timestamp对象的值
void swap(timestamp& that);
//用std::string形式返回,格式[millisec].[microsec]
string toString() const;
//格式, "%4d年%02d月%02d日 星期%d %02d:%02d:%02d.%06d",时分秒.微秒
string toFormattedString(bool ifShowMicroSec=true) const;
  //判断当前时间错是否合法,即是否>0
bool valid() const;
  //返回当前时间戳的微妙
int64_t microSecSinceEpoch() const;
  //返回当前时间戳的秒数
time_t secSinceEpoch() const;
  //返回当前时间所在的时间戳
static timestamp now();
static timestamp invalid();
//返回time_t所在的时间戳
static timestamp fromUnixTime(time_t t);
//返回time_t以microsec为偏移所在的时间戳
static timestamp fromUnixTime(time_t t,int microsec);

类外相关函数:

  应当注意timestamp继承了boost等于和小于类,为了实现timestamp的比较操作符,应当重载timestamp的<和==操作符。

//继承了boost的比较类,需要自己实现<和==操作符的重载
inline bool operator<(timestamp l,timestamp r)
{
return l.microSecSinceEpoch()<r.microSecSinceEpoch();
}
inline bool operator==(timestamp l,timestamp r)
{
return l.microSecSinceEpoch()==r.microSecSinceEpoch();
} //返回两个时间戳的差,用秒的形式返回
inline double timeDifference(timestamp high,timestamp low)
{
int64_t diff=high.microSecSinceEpoch()-low.microSecSinceEpoch();
return static_cast<double>(diff/timestamp::microSecInSec);
} //返回一个时间戳加上给定秒数的新的时间戳
inline timestamp addTime(timestamp ts,double sec)
{
int64_t microsec=ts.microSecSinceEpoch()+
static_cast<int64_t>(sec)*timestamp::microSecInSec;
return timestamp(microsec);
}

muduo源码解析1-timestamp类的更多相关文章

  1. muduo源码解析5-mutex相关类

    mutexlock和mutexlockguard class mutexlock:noncopyable { }: class mutexlockguard:noncopyable { }: 作用: ...

  2. Mybatis源码解析3——核心类SqlSessionFactory,看完我悟了

    这是昨晚的武汉,晚上九点钟拍的,疫情又一次来袭,曾经熙熙攘攘的夜市也变得冷冷清清,但比前几周要好很多了.希望大家都能保护好自己,保护好身边的人,生活不可能像你想象的那么好,但也不会像你想象的那么糟. ...

  3. AOP源码解析:AspectJAwareAdvisorAutoProxyCreator类的介绍

    AspectJAwareAdvisorAutoProxyCreator 的类图 上图中一些 类/接口 的介绍: AspectJAwareAdvisorAutoProxyCreator : 公开了Asp ...

  4. muduo源码解析11-logger类

    logger: class logger { }; 在说这个logger类之前,先看1个关键的内部类 Impl private: //logger内部数据实现类Impl,内部含有以下成员变量 //时间 ...

  5. muduo源码解析10-logstream类

    FixedBuffer和logstream class FixedBuffer:noncopyable { }: class logstream:noncopyable { }: 先说一下包含的头文件 ...

  6. Netty源码解析 -- 内存对齐类SizeClasses

    在学习Netty内存池之前,我们先了解一下Netty的内存对齐类SizeClasses,它为Netty内存池中的内存块提供大小对齐,索引计算等服务方法. 源码分析基于Netty 4.1.52 Nett ...

  7. AOP源码解析:AspectJExpressionPointcutAdvisor类

    先看看 AspectJExpressionPointcutAdvisor 的类图 再了解一下切点(Pointcut)表达式,它指定触发advice的方法,可以精确到返回参数,参数类型,方法名 1 pa ...

  8. java源码解析之Object类

    一.Object类概述   Object类是java中类层次的根,是所有类的基类.在编译时会自动导入.Object中的方法如下: 二.方法详解   Object的方法可以分成两类,一类是被关键字fin ...

  9. Bulma 源码解析之 .columns 类

    {说明} 这一部分的源码内容被我简化了,另外我还额外添加了一个辅助类 is-grow. .columns // 修饰类 &.is-centered justify-content: cente ...

  10. java源码解析之String类(二)

    上一节主要介绍了String类的一些构造方法,主要分为四类 无参构造器:String(),创建一个空字符串"",区别于null字符串,""已经初始化,null并 ...

随机推荐

  1. django 命令行命令

    django-admin startproject 项目名 django-admin startproject python manage.py makemigrations python manag ...

  2. PHP natsort() 函数

    ------------恢复内容开始------------ 实例 对数组进行排序: <?php$temp_files = array("temp15.txt"," ...

  3. x86架构:保护模式下加载并运行用户程序

    本章的代码分3个模块: MBR 引导:加载内核core程序 core:包含内核代码段(从磁盘加载用户程序并重定位).内核数据段(存放api名称.临时缓冲.字符串等).API段(供用户程序调用) 用户程 ...

  4. Canal工作原理

    摘自:http://www.importnew.com/25189.html 背景 mysql主备复制实现: 从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中( ...

  5. Servlet容器启动过程

    参考:https://blog.csdn.net/fredaq/article/details/9366043 一.概念 所谓Servlet容器其实说白了是符合Servlet规范的Java web容器 ...

  6. 【BZOJ3307】雨天的尾巴 题解(树链剖分+树上差分)

    题目链接 题目大意:给定一颗含有$n$个结点的树,每次选择两个结点$x$和$y$,对从$x$到$y$的路径上发放一带$z$类型的物品.问完成所有操作后每个结点发放最多的时哪种物品. 普通的树链剖分貌似 ...

  7. spring-Sessions are not supported by the MongoDB cluster to which this client is connected

    原因: 1.mongodb版本过低4.0以下不支持事务的情况下会报这个 2.安全认证问题参考如下连接 https://blog.csdn.net/ssehs/article/details/10530 ...

  8. python flask构建小程序订餐系统--centos下项目开发环境的搭建

    1.项目开发环境的搭建(Linux环境) 1)软件的安装 我们搭建整个项目的过程中,我们需要用到下面的一些软件,但是这些软件的安装过程我们在这里不用说明.(因为windows软件的安装比较的简单,类似 ...

  9. “随手记”开发记录day09

    今天完成了关于我们页面和更新查找页面 效果

  10. java动态代理——代理方法的假设和验证及Proxy源码分析五

    前文地址 https://www.cnblogs.com/tera/p/13419025.html 本系列文章主要是博主在学习spring aop的过程中了解到其使用了java动态代理,本着究根问底的 ...