C/C++获取系统当前毫秒级时间,Windows与Linux通用

参考链接:
https://www.cnblogs.com/justlikethat/p/3623504.html
https://www.runoob.com/cplusplus/cpp-date-time.html

函数原型:void ftime(struct timeb *tp);
头文件:#include <sys/timeb.h>
timeb结构体定义:

struct timeb{ 
    time_t time;   /*为1970-01-01至今的秒数*/
    unsigned short millitm; /* 千分之一秒即毫秒  */
    short timezone;  /* 为目前时区和Greenwich相差的时间,单位为分钟 */
    short dstflag;   /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */ 
};

结构类型 tm 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:

struct tm {
  int tm_sec;   // 秒,正常范围从 0 到 59,但允许至 61
  int tm_min;   // 分,范围从 0 到 59
  int tm_hour;  // 小时,范围从 0 到 23
  int tm_mday;  // 一月中的第几天,范围从 1 到 31
  int tm_mon;   // 月,范围从 0 到 11
  int tm_year;  // 自 1900 年起的年数
  int tm_wday;  // 一周中的第几天,范围从 0 到 6,从星期日算起
  int tm_yday;  // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
  int tm_isdst; // 夏令时
}

此方法算的是现实世界流逝的时间,获得从UTC时间1970年1月1日午夜(00:00:00)起累计的时间
与clock()不同,clock()计算的是从程序运行开始被程序进程使用的CPU时间tick,而不是真正现实世界流逝的时间。很显然这个时间肯定要比现实时间要慢的多,除非CPU只有你这么一个进程在跑,占用了全部CPU。

示例:

#include <iostream>
#include <sys/timeb.h>

int main( )
{
    struct timeb t1;
    ftime(&t1);
    //t1.time是从UTC时间1970年1月1日午夜(00:00:00)起累计的秒数;t1.millitm是一秒内的毫秒数
    time_t ttt= t1.millitm+t1.time*1000;
    std::cout << ttt << std::endl;
    printf("%ld.%03d\n", t1.time, t1.millitm);

    std::cout << "1970 到目前经过秒数:" << t1.time << std::endl;
    tm *ltm2 = localtime(&t1.time);
    // 输出 tm 结构的各个组成部分
    std::cout << "年: "<< 1900 + ltm2->tm_year << std::endl;
    std::cout << "月: "<< 1 + ltm2->tm_mon<< std::endl;
    std::cout << "日: "<<  ltm2->tm_mday << std::endl;
    std::cout << "时间: "<< ltm2->tm_hour << ":" << ltm2->tm_min << ":" << ltm2->tm_sec << std::endl;
}

输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值