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. powerbulider9.0在数据窗口中实现滚动到新添加行

    powerbuilder9.0对数据窗口进行增加行操作,然后实现滚动到指定行时,应先滚动到指定行dw_1.scrolltorow( row),然后设置新添加的行为当前行dw_1.setrow( row ...

  2. Top命令查看内存

    c 切换显示命令名称和完整命令行. M 根据驻留内存大小进行排序 第四行:内存状态 8306544k total — 物理内存总量(8GB) 7775876k used — 使用中的内存总量(7.7G ...

  3. Java Lambda简明教程(一)

    Lambda表达式背景 许多热门的编程语言如今都有一个叫做lambda或者闭包的语言特性,包括比较经典的函数式编程语言Lisp,Scheme,也有稍微年轻的语言比如JavaScript,Python, ...

  4. 计数排序之python 实现源码

    old = [2, 5, 3, 0, 2, 3, 0, 3] new = [0, 0, 0, 0, 0, 0] for i in range(len(old)): new[old[i]] = new[ ...

  5. 360极速浏览器在XP系统下的一个bug

    今天在做页面开发的时候,发现360浏览器在XP系统下不支持focus事件,而主流的IE(包括IE6),firefox,chrome都没有这个问题.前段开发的悲剧啊,各种浏览器兼容性的问题.

  6. 高效线程池之无锁化实现(Linux C)

    from:http://blog.csdn.net/xhjcehust/article/details/45844901 笔者之前练手写过一个小的线程池版本(已上传至https://github.co ...

  7. Java Servlet 回顾

    一.转发请求RequestDispatcher 使用request域对象把数据带给转发资源,与重定向的区别:客户端只发出一次请求,服务器端调用多个资源,客户端浏览器地址栏没改变:转发是一次请求,使用的 ...

  8. javascript 写策略模式,商场收银打折优惠策略

    [Decode error - output not utf-8] ----------------------------- 购物清单 方便面 : 100 x 50 = 5000 | 4000 菊花 ...

  9. Python深入学习笔记(一)

    写在前面的话 从08年接触Python到现在,断断续续地使用,到如今Python已经成为日常事物处理.科研实验,甚至工程项目的主力语言,主要因为其敏捷性和快速实现的能力.虽然看了一些Python的教程 ...

  10. PHP下拉框选择的实现方法

    实现 第一种PHP下拉框实现方法: < ?php //提交下拉框; //直接饱触发onchange事件的结果 $id=$_GET['myselect']; // myselect 为locati ...