C++中获取日期函数gmtime和localtime区别

article/2025/10/14 14:23:30

函数gmtime和localtime的声明如下:

struct tm * gmtime (const time_t * timer);
struct tm * localtime (const time_t * timer);

它们均接收一个time_t的const指针类型,time_t类型通常是一个大整数值,该整数值表示自UTC时间1970年1月1日00:00以来经过的秒数即UNIX时间戳,可直接调用time函数获取,如下面测试代码中的time(&rawtime)语句。

它们均返回类型为tm的结构体指针。此结构体的声明如下:由此可见gmtime和localtime函数主要做的就是将大整数值rawtime转换成易读取的时间,如可快速获取年、月、日等。

struct tm {int tm_sec;   // seconds after the minute - [0, 60] including leap secondint tm_min;   // minutes after the hour - [0, 59]int tm_hour;  // hours since midnight - [0, 23]int tm_mday;  // day of the month - [1, 31]int tm_mon;   // months since January - [0, 11]int tm_year;  // years since 1900int tm_wday;  // days since Sunday - [0, 6]int tm_yday;  // days since January 1 - [0, 365]int tm_isdst; // daylight savings time flag
};

gmtime和localtime区别:

(1).gmtime将time_t转换为UTC时间,UTC的全称为Coordinated Universal Time,即世界标准时间。

(2).localtime将time_t转换为本地时间(local time)。北京时间比UTC时间早8小时。

测试代码段如下:

void print_time(const std::string& type, const struct tm* timeinfo)
{int year = timeinfo->tm_year + 1900; // years since 1900int month = timeinfo->tm_mon + 1; // months since January - [0, 11]int day = timeinfo->tm_mday;int date = year * 10000 + month * 100 + day;int hour = timeinfo->tm_hour;int minute = timeinfo->tm_min;int second = timeinfo->tm_sec;fprintf(stdout, "type: %s\t, date: %d, time: %.2d:%.2d:%.2d\n", type.c_str(), date, hour, minute, second);
}int test_gmtime_localtime()
{
{ // gmtimetime_t rawtime;time(&rawtime);struct tm* timeinfo = gmtime(&rawtime);print_time("UTC", timeinfo);
}{ // localtimetime_t rawtime;time(&rawtime);struct tm* timeinfo = localtime(&rawtime);print_time("localtime", timeinfo);
}return 0;
}

执行结果如下:localtime比UTC早8小时

GitHub:https://github.com/fengbingchun/Messy_Test


http://chatgpt.dhexx.cn/article/5KYTWqIx.shtml

相关文章

C语言学习笔记---时间函数ctime()和gmtime()

函数原型如下: __CRT_INLINE char *__cdecl ctime(const time_t *_Time);__CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time);ctime函数 ctime函数可以将当前时间值转换为字符串格式返回。返回的字符串格式为:Www Mmm dd hh:mm:ss yyyy 其中&…

Linux系统编程一:时间和延时、gmtime和localtime函数返回相同

目录 1. 概述2. 延时函数3. 当前时间3.1 时间调用函数3.2 时间转换函数 4. gmtime和localtime函数返回相同测试代码 1. 概述 前面的几篇文章Linux学习笔记一到七,主要是开发环境的搭建,都是一些准备工作。从本篇文章开始,将学习Linux系统编程…

逆向 time.h 函数库 time、gmtime 函数

0x01 time 函数 函数原型&#xff1a;time_t time(time_t *t)函数功能&#xff1a;返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间&#xff0c;以秒为单位。如果 seconds 不为空&#xff0c;则返回值也存储在变量 seconds 中C\C 实现&#xff1a; #include <stdio.…

python gmtime_在Python中操作日期和时间之gmtime()方法的使用

在Python中操作日期和时间之gmtime()方法的使用 这篇文章主要介绍了在Python中操作日期和时间之gmtime()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下 gmtime()方法转换历元到一struct_time以UTC其中dst的标志值始终为0以秒表示时间。如果不设置秒时或None&a…

gmtime与localtime的区别

目录 gmtime函数 linux环境下&#xff1a; window环境下 localtime函数 gmtime函数 gmtime转换的时间是UTL时间&#xff0c;与北京时间相差了8个小时 如果你想要得到北京时间&#xff0c;不建议你将gmtime转换后的时间直接加上八个小时 linux环境下&#xff1a; 执行结…

【C库函数】strerror函数详解

目录 strerror 函数原型 参数详解 返回值详解 函数讲解 strerror 返回错误码&#xff0c;所对应的错误信息 函数原型 char *strerror( int errnum ); 参数详解 参数errnum解析错误码信息(errno) 返回值详解 strerror函数就是返回这些错误码所对应错误信息的字符串起始地…

详解:strerror函数:将错误码转化为错误信息

对于大家在浏览网页的时候&#xff0c;或多或少的会见识过不少的错误信息&#xff1a;比如&#xff1a;最常见的就是&#xff1a;404 但是&#xff0c;使用strerror函数&#xff0c;可以将错误码转化为错误信息&#xff01;不知道偶然间看见的读者是否有兴趣进行深入研究一下&…

Strerror函数和Perror函数的介绍及使用

Strerror 通过标准错误的标号&#xff0c;获得错误的描述字符串 &#xff0c;将单纯的错误标号转为字符串描述&#xff0c;方便用户查找错误。 需要引用的头文件 #include <errno.h> #include <string.h> 用法&#xff1a;如果调用函数失败&#xff0c;会产生错误码…

strerror函数使用

。 char *strerror(int errnum); 功能&#xff1a;通过标准错误的标号&#xff0c;获得错误的描述字符串 &#xff0c;将单纯的错误标号转为字符串描述。 参数&#xff1a;errnum&#xff1a;最新的错误标号。 返回值&#xff1a;指向错误信息的指针。#include <stdio.h>…

Linux 应用编程之strerror函数

在 Linux 系统下对常见的错误做了一个编号&#xff0c;每一个编号都代表着每一种不同的错误类型&#xff0c;当函数执行发生错误的时候&#xff0c;操作系统会将这个错误所对应的编号赋值给 errno 变量&#xff0c;每一个进程&#xff08;程序&#xff09;都维护了自己的 errno…

C语言函数: 字符串函数及模拟实现strtok()、strstr()、strerror()

C语言函数&#xff1a; 字符串函数及模拟实现strtok()、strstr()、strerror() strstr()函数: 作用&#xff1a;字符串查找。在一串字符串中&#xff0c;查找另一串字符串是否存在。 形参: str2在str1中寻找。返回值是char*的指针 原理&#xff1a;如果在str1中找到了str2&…

【strerror函数的使用】

strerror函数的使用 一&#xff0c;说明二&#xff0c;具体使用场景 一&#xff0c;说明 strerror会返回错误码&#xff0c;我们可以将其翻译成所对应的错误信息&#xff1b; c语言的库函数在运行的时候&#xff0c;如果发生错误&#xff0c;就会将错误码存放在一个变量中&…

strerror 函数

收藏 75 23 strerror编辑 本词条缺少 名片图&#xff0c;补充相关内容使词条更完整&#xff0c;还能快速升级&#xff0c;赶紧来 编辑吧&#xff01; 通过标准错误的标号&#xff0c;获得错误的描述字符串 &#xff0c;将单纯的错误标号转为字符串描述&#xff0c;方便用户查找…

strerror函数介绍

认识strerror 库函数调用失败的时候会产生错误码&#xff0c;而每一个错误码对应着一条错误信息&#xff0c;strerror函数的作用就是将错误码给转化成错误信息。 在C语言中有一条全局的错误码errno&#xff0c;在程序运行过程中&#xff0c;只要库函数调用失败&#xff0c;我们…

strerror perror

strerror这个函数把错误码转化为错误信息,把错误信息的起始地址返回 X86下的代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { printf("%s\n", strerror(0)); printf("%s\n", strerror(1…

关于strerror

1功能 strerror用于返回错误码信息的首字符的地址。 可以这样理解&#xff0c;函数运行过程中如果失败的话&#xff0c;会返回一个错误码放在errno中&#xff0c;&#xff08;原先设计中就已经存在的&#xff09;调用strerror函数的话&#xff0c;可以打印对应的错误信息 2 …

Multipass虚拟机入门教程

目录 一、Multipass介绍 二、Multipass的安装 1. 系统版本 2. 下载地址和官网教程 3. 安装 4. 查看版本并测试是否安装成功 5. 若启动失败 三、Multipass的简单使用 1. 设置虚拟化提供方式&#xff08;忽略该步骤&#xff09; 2. 创建名为test虚拟机&#xff0c;分配…

服务器vmware新建虚拟机教程,如何创建虚拟机教程全解

这部分教程我们将学习的是如何创建虚拟机。在创建虚拟机之前&#xff0c;vSphere Client是必要的软件之一&#xff0c;它用于访问ESX主机或vCenter的图形管理用户界面。 vSphere Client安装在Windows计算机上&#xff0c;它是与虚拟基础架构进行交互的主要方法。 1.安装vSphere…

专为折腾而生!老旧电脑安装PVE虚拟机保姆教程

专为折腾而生&#xff01;老旧电脑安装PVE虚拟机保姆教程 这几天玩VMware虚拟机上瘾&#xff0c;感觉特别有意思。然而我其实并不满足于只是在这种软件层面上玩玩&#xff0c;而想挑战更高级的玩法&#xff0c;比如说玩玩可以安装在实体机上的虚拟机系统~~ 说直接点就是我想在…

虚拟机Hyper-V的安装以及使用教程

目录 前言 一、什么是虚拟机Hyper-V&#xff1f; 二、使用步骤 虚拟机的安装 前言 Hyper-V是Windows操作系统提供的虚拟机管理平台&#xff0c;所有提供Hyper-V功能的Windows操作系统都可以根据本论文的内容安装并管理虚拟机。具体来说&#xff0c;Hyper-V 提供硬件虚拟化…