iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++时间函数怎么使用
  • 134
分享到

C++时间函数怎么使用

2023-07-04 11:07:17 134人浏览 泡泡鱼
摘要

这篇文章主要介绍“c++时间函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++时间函数怎么使用”文章能帮助大家解决问题。一、 时间概念格林威治时间GMT(Greenwich Mean

这篇文章主要介绍“c++时间函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++时间函数怎么使用”文章能帮助大家解决问题。

    一、 时间概念

    格林威治时间GMT(Greenwich Mean Time)

    格林威治皇家天文台为了海上霸权的扩张计划,在十七世纪就开始进行天体观测。为了天文观测,选择了穿过英国伦敦格林威治天文台子午仪中心的一条经线作为零度参考线,这条线,简称格林威治子午线。

    1884年10月召开了一个国际子午线会议,该会议将格林威治子午线设定为本初子午线,并将格林威治平时 (GMT, Greenwich Mean Time) 作为世界时间标准(UT, Universal Time)。由此也确定了全球24小时自然时区的划分,所有时区都以和 GMT 之间的偏移量做为参考。

    1972年之前,格林威治时间(GMT)一直是世界时间的标准。1972年之后,GMT 不再是一个时间标准了。

    XP系统中,默认时间格式是GMT。

    目前UTC与GMT 相差为0.9秒,故二者可以基本视为一致。

    原子时间

    1967年,人们利用铯原子振荡周期极为规律的特性,研制出了高精度的原子时钟,将铯原子能级跃迁辐射9192631770周所经历的时间定为1s。现在用的时间就是1971年10月定义的国际原子时,是通过世界上大约200多台原子钟进行对比后,再由国际度量衡局时间所进行数据处理,得出的统一的原子时,简称Tai

    世界协调时

    又称世界统一时间、世界标准时间。UTC是现在全球通用的时间标准,全球各地都同意将各自的时间进行同步协调。UTC 时间是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以秒为单位的国际原子时所综合精算而成。

    UTC 构成:

    原子时间(TAI):

    结合了全球400个所有的原子钟而得到的时间,它决定了我们每个人的钟表中,时间流动的速度。

    世界时间(UT, Universal Time):

    也称天文时间,或太阳时,他的依据是地球的自转,我们用它来确定多少原子时,对应于一个地球日的时间长度。

    格式: YYYY-MM-DDThh:mm:ssZ

    协调世界时不与任何地区位置相关,也不代表此刻某地的时间,所以在说明某地时间时要加上时区。也就是说GMT并不等于UTC,而是等于UTC+0,只是格林尼治刚好在0时区上。GMT = UTC+0。

    本地时间

    在日常生活中所使用的时间我们通常称之为本地时间。这个时间等于我们所在(或者所使用)时区内的当地时间,它由与世界标准时间(UTC)之间的偏移量来定义。这个偏移量可以表示为 UTC- 或 UTC+,后面接上偏移的小时和分钟数。

    GMT是前世界标准时,UTC是现世界标准时。

    UTC 比 GMT更精准,以原子时计时,适应现代社会的精确计时。

    但在不需要精确到秒的情况下,二者可以视为等同。

    每年格林尼治天文台会发调时信息,基于UTC。

    二、linux-c时间的存储方式

    1. time_t

    一个整型,存储从1970-1-1 00:00:00年到现在UTC+0经过了多少秒,进一步的,struct timeval可精确到微秒。

    2. struct tm

    用一个结构来分别存储年月日时分秒。

    struct tm{    int tm_sec;      int tm_min;      int tm_hour;     int tm_mday;     int tm_mon;    1+p->tm_mon;    int tm_year;    1900+ p->tm_year;    int tm_wday;     int tm_yday;     int tm_isdst; };特别注意,年份是从1900年起至今多少年,而不是直接存储如2022年。月份从0开始的,0表示一月,星期也是从0开始的, 0表示星期日,1表示星期一。

    三、 常用函数

    #include <time.h>

    #include <sys/time.h>

    time_t time(time_t* t);

    取得从1970-1-1 00:00:00至今(UTC+0)的秒数,注意并不是至本地时间的秒数。该时间戳为GMT时间,即时区为0。

    time()总是返回的是当前格林威治时间,不论系统/程序采用的哪个时区。所以使用time_t时候,让time_t上的存储值总是描述格林威治时间。

        time_t tm = time(nullptr);//取得从1970-1-1 00:00:00至今(UTC+0)的秒数    //或    time(&tm0);

    struct tm* gmtime(const time_t* timep);

    将time_t表示的时间戳转换为没有经过时区转换的UTC时间,是一个struct tm结构指针。

        struct tm *tmStamp = nullptr;    time_t tmSec = time(nullptr);     tmStamp = gmtime(&tmSec);   //返回没有经过时区转换的UTC时间 struct tm结构

    struct tm* localtime(const time_t* timep);

    将time_t表示的时间戳转换换成经过时区转换的时间。使用time_t格林威治时间+时区偏差,生成tm结构

        struct tm *tmStamp = nullptr;    time_t tmSec;    time(&tmSec); //取得从1970年1月1日至今的秒数    tmStamp = localtime(&tmSec); //返回经过时区转换的时间,***注意本函数可能会修改时间秒的值***

    time_t mktime(struct tm* timeptr);

    将struct tm 结构的时间转换为从1970-1-1年至今的秒数。

    mktime考虑了时区,输入的值总是要求【localtime-tm】结构-当前时区时间,输出值格林威治时间;

    char asctime(const struct tm timeptr);

    将struct tm结构中的信息转换为真实世界的时间(不经过时区转换的UTC时间),以字符串的形式显示。

        time_t timeSec;    time(&timeSec);         printf("%s", asctime(gmtime(&timeSec))); //没有经过时区转换的UTC时间

    char ctime(const time_t timep);

    将 time_t时间秒表示的时间转换为真实世界的时间(经时区转换的UTC时间),以字符串显示。

    ctime考虑了时区,输入值要求time_t是格林威治时间,输出来的值总是用来描述当地时间。

    // 形式:Mon Oct 24 11:41:17 2022``## 7. gettimeofday(&tmval,&zone); // for linux 返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用传NULL。```cstruct timezone zone;    struct timeval tmval;    gettimeofday(&tmval,&zone); // for linux

    double difftime(time_t time1, time_t time2);

    返回两个时间秒相差的秒数。

    ctime返回的是静态变量地址;更要注意gmtime与localtime返回的静态变量地址是同一个,后调用的会覆盖上次调用的值;

    tm结构存储值有时用来描述格林威治时间gmtime,有时用来描述当地时间localtime-当前时区时间。

    四、 时间格式化

    size_t strftime(char *str, size_t count, const char *fORMat, const struct tm *tm)

    函数原型
    #include <time.h>
    size_t strftime(char *str, size_t count, const char *format, const struct tm *tm);
    参数说明
      str, 表示返回的时间字符串
      count, 要写入的字节的最大数量
      format, 格式字符串由零个或多个转换符和普通字符(除%)
      tm, 输入时间
    返回值
      如果包含终止的空字符在内的结果字符的总数不大于count,则函数strftime返回字符数,这些字符被放到s指向的数组中但不包含终止的空字符。否则,函数返回零,且数组的内容不确定。

    一个常规用法

    char* format = "%Y-%m-%d %H:%M:%S";    char strTime[100];    strftime(strTime, sizeof(strTime), format, tmTime);//2022-10-07 20:46:01

    五、计时器-时间段

    #include <time.h>#include <iOStream>using namespace std;clock_t start = clock();// do something...clock_t end   = clock();cout << "花费了" << (double)(end - start) / CLOCKS_PER_SEC << "秒" << endl;

    可精确到毫秒

    六、chrono

    C++ 11 标准库引入了chrono库。利用该库可以做时间运算和换算。

    一个性能统计用法

    #include <chrono>   using namespace std;using namespace chrono;auto start = system_clock::now();// do something...auto end   = system_clock::now();auto duration = duration_cast<microseconds>(end - start);cout <<  "花费了"      << double(duration.count()) * microseconds::period::num / microseconds::period::den      << "秒" << endl;//精确到微妙

    关于“C++时间函数怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: C++时间函数怎么使用

    本文链接: https://www.lsjlt.com/news/344867.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C++时间函数怎么使用
      这篇文章主要介绍“C++时间函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++时间函数怎么使用”文章能帮助大家解决问题。一、 时间概念格林威治时间GMT(Greenwich Mean ...
      99+
      2023-07-04
    • mysql时间戳函数怎么使用
      MySQL有几个内置的函数可以用来处理时间戳: UNIX_TIMESTAMP()函数:将一个日期或日期时间表达式转换为一个UNIX...
      99+
      2024-04-09
      mysql
    • C/C++中时间库函数的使用详解
      目录C/C++ 中时间的概念常用的时间库函数time()asctime()gmtime()ctime()localtime()mktime()difftime()C/C++ 获取当前...
      99+
      2022-11-13
      C/C++时间库函数 C/C++时间函数 C++ 时间函数
    • MySQL时间函数怎么正确使用
      MySQL中有很多时间函数,可以对日期和时间进行各种操作和计算。下面是一些常用的MySQL时间函数及其正确使用方法:1. NOW()...
      99+
      2023-08-15
      MySQL
    • PHP unix时间戳函数怎么使用
      在PHP中,可以使用time()函数来获取当前的Unix时间戳。以下是time()函数的使用示例:```php$timestamp ...
      99+
      2023-09-21
      PHP unix
    • PHP日期时间函数date()怎么使用
      PHP日期时间函数date()用于格式化一个本地的日期和时间,并返回格式化后的字符串。使用date()函数的基本语法如下:```date(format, timestamp)```其中,`format`参数是必需的,指定日期时间的格式。...
      99+
      2023-08-09
      PHP date()
    • C#中的延时函数怎么使用
      本篇内容主要讲解“C#中的延时函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的延时函数怎么使用”吧!C#一些延时函数sleep延时方法System.Threading.Thre...
      99+
      2023-07-02
    • PHP怎么使用time()函数将当前时间转为时间戳
      这篇文章主要介绍了PHP怎么使用time()函数将当前时间转为时间戳的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP怎么使用time()函数将当前时间转为时间戳文章都会有所收获,下面我们一起来看看吧。在PH...
      99+
      2023-07-05
    • C#中的延时函数sleep怎么使用
      本篇内容介绍了“C#中的延时函数sleep怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#延时函数sleepsleepusing&...
      99+
      2023-07-02
    • 怎么在PHP中使用时间转换函数
      这篇文章主要介绍“怎么在PHP中使用时间转换函数”,在日常操作中,相信很多人在怎么在PHP中使用时间转换函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在PHP中使用时间转换函数”的疑惑有所帮助!接下来...
      99+
      2023-07-05
    • 使用C#中的DateTime.Now函数获取当前时间
      使用C#中的DateTime.Now函数获取当前时间在C#编程中,我们经常需要获取当前的时间。C#中提供了DateTime.Now函数来获取当前的系统时间。下面我将给大家介绍如何使用DateTime.Now函数,并给出具体的代码示例。Dat...
      99+
      2023-11-18
      当前时间 时间获取 C#: DateTimeNow
    • jmeter的时间戳函数使用
      在使用jmeter做接口测试的时候,经常会要用到日期这种函数,让系统自动生成一些格式化的数据,方便接口测试,jmeter自身就带有时间戳的函数 1、__time:获取时间戳、格式化时...
      99+
      2024-04-02
    • jmeter中时间戳函数怎么用
      这篇文章主要介绍了jmeter中时间戳函数怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在使用jmeter做接口测试的时候,经常会要用到日期这种函数,让系统自动生成一些...
      99+
      2023-06-21
    • SQL Server中的日期时间函数怎么使用
      本篇内容主要讲解“SQL Server中的日期时间函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的日期时间函数怎么使用”吧!1、getdat...
      99+
      2023-06-30
    • oracle时间函数怎么加
      非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
      99+
      2024-05-21
    • C++时间函数整理详解
      目录一、 时间概念原子时间世界协调时本地时间二、Linux-c时间的存储方式1. time_t2. struct tm三、 常用函数四、 时间格式化五、计时器-时间段六、chrono...
      99+
      2022-11-13
      C++时间函数怎么用 C++时间函数 C++时间
    • 怎么使用C++ bind函数
      本篇内容主要讲解“怎么使用C++ bind函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C++ bind函数”吧!1.使用由来我们看到我使用的代码是boost :: bind,而大家...
      99+
      2023-06-16
    • C++ lambda函数怎么使用
      本篇内容介绍了“C++ lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda 表达式Lambda 表...
      99+
      2023-07-05
    • C/C++时间相关的函数有哪些
      本篇内容主要讲解“C/C++时间相关的函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C/C++时间相关的函数有哪些”吧!首先介绍下C++标准中的chrono库chrono是一个关于时间...
      99+
      2023-06-16
    • c++ accumulate函数怎么使用
      C++ accumulate函数是C++标准库中的一个算法函数,用于对容器中的元素进行累加操作。其函数原型如下: template ...
      99+
      2024-02-29
      c++
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作