获取时间戳与当地时间

gettimeofday和time(NULL)返回的都是绝对时间戳, 时间戳全世界统一;可读的年月日时间则不一样。

在全世界,执行date +%s的结果都一样,但是执行date +%Y%m%d-%H%M%S的结果则不同

[fall@localhost zookeeper-3.4.6]$ cat test.cc
#include <iostream>
#include <time.h>
#include <sys/time.h>
 
using namespace std;
 
unsigned int get_local_secs_1()
{
     struct timeval tv1;
     gettimeofday(&tv1, NULL);
     time_t t1;
     t1 = tv1.tv_sec;
     struct tm *pTime;
     pTime = localtime( &t1 );
     return  pTime->tm_hour * 3600 + pTime->tm_min * 60 + pTime->tm_sec;
}
 
unsigned int get_local_secs_2()
{
     time_t t2;
     time(&t2); //  或者 t2 = time(NULL);
     struct tm *pTime;
     pTime = localtime( &t2 );
     return  pTime->tm_hour * 3600 + pTime->tm_min * 60 + pTime->tm_sec;
}
 
int main()
{
     std::cout<< "今日已经过了几秒:" <<get_local_secs_1()<<std::endl;
     std::cout<< "今日已经过了几秒:" <<get_local_secs_2()<<std::endl;
     return  0;
}

PS:
gmtime与localtime一样,但使用的还是UTC时间,不是当地时间。

数据结构:
#ifndef _TM_DEFINED
struct tm {
           int tm_sec;        /* 秒 – 取值区间为[0,59] */
           int tm_min;        /* 分 - 取值区间为[0,59] */
           int tm_hour;       /* 时 - 取值区间为[0,23] */
           int tm_mday;       /* 一个月中的日期 - 取值区间为[1,31] */
           int tm_mon;        /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
           int tm_year;       /* 年份,其值等于实际年份减去1900 */
           int tm_wday;       /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
           int tm_yday;       /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
           int tm_isdst;      /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
           };
#define _TM_DEFINED
#endif


#ifndef _TIME_T_DEFINED
typedef long time_t;            /* 时间值 */
#define _TIME_T_DEFINED       /* 避免重复定义 time_t */
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值