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. 你不知道的JavaScript 上卷 2/11

    第一部分——作用域和闭包 第一章 作用域是什么 1.几乎所有编程语言最基本的功能之一,就是能够储存变量当中的值,并且能在之后对这个值进行访问或修改.事实上,正是这种储存和访问变量的值的能力将状态带给了 ...

  2. UDP 网络程序-发送_接收数据

    """ 创建udp连接 发送数据给 """ from socket import * # 创建udp套接字,使用SOCK_DGRAM udp ...

  3. Linux下运行windows 系统下编辑的Python脚本显示“: 没有那个文件或目录”的过程及解决方案

    今天在 linux 系统下执行一windows下编辑的python脚本,提示(:没有那个文件或目录)英文提示:(:No such file of directory)如下: 查看文件的权限发现并没有问 ...

  4. python爬虫学习05-爬取图片

    python爬虫学习05-爬取图片 确定要爬取的网址:https://shenan.tuchong.com/20903415/#image309854686 要爬取的内容:使用浏览器插件xpath对图 ...

  5. 03-注释与API文档

    1.注释:Comment分类: 单行注释:// 多行注释:/* */ 文档注释:/** */作用: ① 对所写的程序进行解释说明,增强可读性.方便自己,方便别人 ② 调试所写的代码特点: ①单行注释和 ...

  6. Dropwizard+jersey+MDC实现日志跟踪以及接口响应时间统计

    一.实现接口响应时间统计 1.1添加全局请求过滤器并注册 import org.apache.log4j.MDC; import org.slf4j.Logger; import org.slf4j. ...

  7. @RestController注解初步理解

    一.在Spring中@RestController的作用等同于@Controller + @ResponseBody. 所以想要理解@RestController注解就要先了解@Controller和 ...

  8. Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题

    说在前面 (原文链接: https://blog.csdn.net/qq_34021712/article/details/80774649)本来的整合过程是顺着博客的顺序来的,越往下,集成的越多,由 ...

  9. GitLab 数据库

    访问 GitLab 数据库 步骤 用的 Docker Gitlab,首先进入容器 docker exec -it gitlab /bin/bash `` 找到数据库配置文件 ```bash /var/ ...

  10. 【Linux】linux history命令执行后显示历史命令执行时间

    vim  ~/.bashrc 或者 ~/.bash_profile  或者 获取root权限修改vim /etc/profile 最后添加 export HISTTIMEFORMAT="%F ...