Muduo的时间戳类.

主要功能:

  1. 能够获取当前的时间
  2. 能够将当前的时间以string的形式返回
  3. 能够获取两个时间戳类的时间差
  4. 能够获取当前精确的时间(微秒级)
#ifndef TIMESTAMP_H
#define TIMESTAMP_H
#include <stdint.h>
#include <sys/time.h>
#include <string>

class TimeStamp
{
public:
    TimeStamp(uint64_t microseconds = );

    uint64_t microseconds() const {
        return microseconds_;
    }

    void AddMicroseconds(const uint64_t microseconds) {
        microseconds_ += microseconds;
    }

    std::string ToFormattedString();

    static uint64_t TimeDifference(const TimeStamp& high, const TimeStamp& low);
    static TimeStamp now();

     * ;
private:
    uint64_t  microseconds_;

};

#endif // TIMESTAMP_H
#include "timestamp.h"

TimeStamp::TimeStamp(uint64_t microseconds)
    :microseconds_(microseconds) {

}

TimeStamp TimeStamp::now() {
    struct timeval tv;
    gettimeofday(&tv, NULL);
    uint64_t microseconds =  tv.tv_sec * kMicrosecondPerSeconds + tv.tv_usec;

    return TimeStamp(microseconds);
}

uint64_t TimeStamp::TimeDifference(const TimeStamp& high, const TimeStamp& low) {
    return high.microseconds() - low.microseconds();
}

std::string TimeStamp::ToFormattedString() {
    ] = {};
    struct tm tm_time;
    time_t seconds = microseconds_ / kMicrosecondPerSeconds +  *  * ;
    uint32_t microseconds = microseconds_ % kMicrosecondPerSeconds;
    gmtime_r(&seconds, &tm_time);

    snprintf(buf,  sizeof(buf), "[%04d-%02d-%02d %02d:%02d:%02d:%06d]",
                                 tm_time.tm_year + ,
                                 tm_time.tm_mon + ,
                                 tm_time.tm_mday,
                                 tm_time.tm_hour,
                                 tm_time.tm_min,
                                 tm_time.tm_sec,
                                 microseconds );
    return buf;
}

Muduo-Base-TimeStamp类的更多相关文章

  1. Yii2的深入学习--yii\base\Event 类

    根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Compone ...

  2. pandas中Timestamp类用法讲解

    由于网上关于Timestamp类的资料比较少,而且官网上面介绍的很模糊,本文只是对如何创建Timestamp类对象进行简要介绍,详情请读者自行查阅文档. 以下有两种方式可以创建一个Timestamp对 ...

  3. Yii2的深入学习--yii\base\Object 类

    之前我们说过 Yii2 中大多数类都继承自 yii\base\Object,今天就让我们来看一下这个类. Object 是一个基础类,实现了属性的功能,其基本内容如下: <?php namesp ...

  4. java的Date类和TimeStamp类

    Java API中有两个Date类,一个是java.util.Date,其构造方法如下: Date() Date(long date) 主要方法有: boolean after(Date when) ...

  5. base | Tread类

    Tread类 Linux中,每个进程有一个pid,类型pid_t,由getpid()取得.Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id ...

  6. object base基类分析

    uvm_object,是所有uvm data和hierarchical class的基类,实现了copy,compare,print,record之类的函数 扩展类中必须实现create和get_ty ...

  7. Java Timestamp 类的使用

    很简单,我们可以这样声明 Timestamp ts=new Timestamp(new Date().getTime());这样我们就可以得到时间比较具体的一个类型转换!!! 在开发web应用中,针对 ...

  8. base | Thread类、ThreadData结构体 、CurrentThread命名空间

    __thread __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比.__thread变量每一个线程有一份独立实体,各个线程的值互不干扰.可以用来修饰那些带有全局性且值可能变, ...

  9. base | AtomicIntegerT类

    1. 原子自增操作 type __sync_fetch_and_add (type *ptr, type value) 2. 原子比较和交换(设置)操作 type __sync_val_compare ...

  10. 【Muduo库】【base】基本类

    一.Timestamp类  1.类图如下: 2.  知识点 (1)     这个类继承了 muduo::copyable, 以及 boost::less_than_comparable. (2)    ...

随机推荐

  1. 一个fibonacci数列简单求和的问题

    前段时间老师在讲函数调用的时候,用Fibonacci数列来演示了一下,因为以前没怎么接触过Fibonacci,所以当时很懵. 当时让求的是Fibonacci数列中,第N位值为多少,当时老师写的是: 之 ...

  2. 关于block块使用的6点注意事项

    对于刚学习OC新伙伴,block块一直都是一个比较纠结.比较难懂的知识点,不过,在使用一段时间后,就会感觉很酸爽.block块的原理及使用我就不再赘述,网上有很多这方面的资料.我个人使用这么长时间以来 ...

  3. Objective-C 成员变量的访问修饰即成员变量可见性解析

    总体来说Objective-C的访问成员变量可见性和C++基本一样,只是多了个@package. 以下是详细说明: 例子: @interface CTPerson : NSObject { @priv ...

  4. C#冒泡排序法程序代码

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  5. Unity中使用RequireComponent,没有添加上组件

    using UnityEngine; using System.Collections; [RequireComponent(typeof(MeshFilter), typeof(MeshRender ...

  6. java之表达式陷阱

    String str1 = "Hello Java的长度:10"; String str2 = "Hello Java的长度:10";  String str3 ...

  7. MateSublg

    MateSublg 说明 使用MetaWeblog的方式提交文章,并自动上传图片. 本插件的官方地址:MateSublg – Sollyu博客 本插件的开源地址:sollyu / MetaSubolg ...

  8. Fedora 21 安装QQ国际版

    首先安装依赖包 sudo yum install freetype.i686 libpng.i686 libgcc.i686 libXau.i686 点击下载wine-2012qq国际版 unzip ...

  9. Linux Shell脚本之自动修改IP

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  10. NFS,FTP

    一. NFS1. NFS简介NFS全称是network file systemNFS允许一个系统在网络上与他人共享目录和文件.通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件. 假 ...