C语言 获取系统时间

获取系统时间的函数

#define _TIMEBUFLEN (40)	// 获取日志缓冲需要的大小
void GetSysTime(char* pTimeBuf, u32 dwSize)
{if (pTimeBuf == NULL){return;}
#if defined(_MSC_VER)SYSTEMTIME sys = { 0 };GetLocalTime(&sys);sprintf_s(pTimeBuf, dwSize, "%4d-%02d-%02d %02d:%02d:%02d", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond);
#elsetime_t timer;struct tm* ptTm = NULL;time(&timer);ptTm = localtime(&timer);if (ptTm){snprintf(pTimeBuf, dwSize, "%4d-%02d-%02d %02d:%02d:%02d", ptTm->tm_year + 1900, ptTm->tm_mon + 1, ptTm->tm_mday,ptTm->tm_hour, ptTm->tm_min, ptTm->tm_sec);}
#endif
}

这段代码是一个用于获取系统时间的函数。它接受一个字符指针 pTimeBuf 和一个无符号整数 dwSize 作为参数。函数首先检查 pTimeBuf 是否为空,如果为空则直接返回。

接下来,根据不同的编译器环境,使用不同的方法来获取系统时间。在 Microsoft Visual C++ 环境下,使用 GetLocalTime 函数获取当前系统时间,并将其存储在 SYSTEMTIME 结构体中。然后使用 sprintf_s 函数将时间信息格式化为字符串,并存储在 pTimeBuf 指向的缓冲区中。

在其他编译器环境下,使用 time 函数获取当前时间戳,并使用 localtime 函数将其转换为本地时间。然后使用 snprintf 函数将时间信息格式化为字符串,并存储在 pTimeBuf 指向的缓冲区中。

最终,函数将格式化后的时间字符串存储在 pTimeBuf 指向的缓冲区中,长度不超过 dwSize

相关知识

  • GetLocalTime是一个Windows API函数,用于获取当前系统的本地时间。它的原型如下:
VOID WINAPI GetLocalTime(LPSYSTEMTIME lpSystemTime
);

参数:

  • lpSystemTime:指向一个SYSTEMTIME结构体的指针,该结构体将被填充为当前系统的本地时间。

返回值:无

示例代码:

#include <windows.h>
#include <stdio.h>int main()
{SYSTEMTIME st;GetLocalTime(&st);printf("当前本地时间: %04d-%02d-%02d %02d:%02d:%02d
", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);return 0;
}
  • time_t是C语言中表示时间的数据类型,通常用于存储从1970年1月1日(称为UNIX纪元)到当前时间的秒数。它通常用于处理日期和时间相关的操作。

  • struct tm 是 C 语言中定义的一个结构体,用于表示日期和时间。它通常与 time.h 库中的函数一起使用,例如 localtimegmtime,这些函数可以将一个时间戳转换为 struct tm 结构体。

struct tm 的定义如下:


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代表1月) - 取值区间为[0,11]int tm_year;  // 年份,其值等于实际年份减去1900int tm_wday;  // 星期几(从0开始,0代表星期天) - 取值区间为[0,6]int tm_yday;  // 一年中的天数(从0开始) - 取值区间为[0,365]int tm_isdst; // 夏令时标识符,正数代表使用夏令时,负数代表未使用,0代表不确定
};

当你需要处理日期和时间相关的操作时,可以使用 struct tm 结构体。例如,你可以将一个时间戳转换为本地时间,然后提取其中的年、月、日等信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSH穿透ECS访问内网RDS数据库

处于安全考虑&#xff0c;RDS一般只会允许指定的IP进行访问&#xff0c;而我们开发环境的IP往往是动态的&#xff0c;每次IP变动都需要去修改RDS的白名单&#xff0c;为我们的工作带来很大的不便。 那么如何去解决这个问题&#xff1f; 假如我们有一台ESC服务器&#xff0c;E…

STC89C52学习笔记(八)

STC89C52学习笔记&#xff08;八&#xff09; 综述&#xff1a;本文讲述了LED点阵屏以及如何进行数据串行输入&#xff0c;并行输出。 一、LED点阵屏 1.介绍 LED点阵屏由多个LED组成&#xff0c;以矩阵形式排列&#xff08;类似于矩阵键盘&#xff09;&#xff0c;像素一般…

Objective-C学习笔记(@property,id,instancetype)4.9

1.增强property&#xff1a;自动生成getter和setter方法的声明和实现。 原理&#xff1a;①自动声明私有属性②自动生成getter和setter方法的声明和实现。 property 数据类型 变量名 注意变量名要去掉下划线&#xff0c;如果同时重写getter和setter那么不回自动声明私有属性。…

【iOS ARKit】App 中嵌入 AR Quick Look

AR Quick Look 功能强大&#xff0c;但在应用中嵌入并使用它实现 AR体验却非常简单&#xff0c;如其他所有QuickLook使用一样&#xff0c;简单到只需要提供一个文件名就可以达到目标。 AR Quick Look 支持.usdz 和.reality 两种格式文件&#xff0c;如果在 Xcode 工程中引入了 …

CSS滚动条样式修改

前言 目前我们可以通过 CSS伪类 来实现滚动条的样式修改&#xff0c;以下为修改滚动条样式用到的CSS伪类&#xff1a; ::-webkit-scrollbar — 整个滚动条 ::-webkit-scrollbar-button — 滚动条上的按钮 (上下箭头) ::-webkit-scrollbar-thumb — 滚动条上的滚动滑块 ::-web…

安卓逆向之-Xposed RPC

引言: 逆向为最终的协议,或者爬虫的作用。 有几种方式,比如直接能力强,搞成协议。 现在好多加密解密都写入到so ,所以可以使用unidbg 一个可以模拟器so 执行的环境的开源项目。RPC 调用,又分为Frida, 还有今天讲的Xposed RPC。 原理: Xposed 可以hook ,然后可以直接…

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步&#xff0c;显著提升了各种任务的完成度。然而&#xff0c;其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数&#xff0c;需要…

Golang使用PGO优化程序性能

文章目录 参考文章PGO是什么使用PGO的好处PGO做了什么热函数内联什么是内联内联的好处Go默认的内联策略查看内联预算PGO的热函数内联 去虚拟化调用指令高速缓存 PGO有什么缺点可执行程序变大构建时间变长 PGO怎么使用典型的工作流程收集CPU配置文件生产环境启动PGO代码改动重新…

html中部分重要或有趣的标签讲解

1.a标签 在 HTML 语法中&#xff0c;a 标签称作 锚元素&#xff0c;这种称呼来源于 a 标签这种元素具有锚定资源的功能。从归属来看&#xff0c;所锚定的资源可以本地的&#xff0c;也可是来自网络上的&#xff1b;而从分类来看&#xff0c;所锚定的资源&#xff0c;可以是网页…

Electron+React 搭建桌面应用

创建应用程序 创建 Electron 应用 使用 Webpack 创建新的 Electron 应用程序&#xff1a; npm init electron-applatest my-new-app -- --templatewebpack 启动应用 npm start 设置 Webpack 配置 添加依赖包&#xff0c;确保可以正确使用 JSX 和其他 React 功能&#xff…

3.1 基本形式 机器学习

从本章本节开始就开始正式介绍机器学习的算法了&#xff01;我们首先登场的是---------线性模型。 w可以理解为权重&#xff0c;我们的x就是我们的样本点的各个特征数值&#xff0c;最后输出模型f&#xff08;x&#xff09;。其代表我们把样本点带入&#xff0c;以二分类为例&a…

厂房起火3D消防灭火安全救援模拟演练

深圳VR公司华锐视点依托前沿的VR虚拟现实制作、三维仿真和图形图像渲染技术&#xff0c;将参训者带入栩栩如生的火灾现场。佩戴VR头盔&#xff0c;参训者将真切体验火势蔓延的紧张与危机&#xff0c;身临其境地感受火灾的恐怖。 并且消防安全VR虚拟现实演练系统精心模拟了住宅、…

修复 Windows 上的 PyTorch 1.1 github 模型加载权限错误

问题: 在 Windows 计算机上执行示例 github 模型加载时,生成了 master.zip 文件的权限错误(请参阅下面的错误堆栈跟踪)。 错误堆栈跟踪: 在[4]中:en2de = torch.hub.load(pytorch/fairseq, transformer.wmt16.en-de, tokenizer=moses, bpe=subword_nmt) 下载:“https://…

90天玩转Python—11—基础知识篇:Python自动化操作Excel:读写、增删改查、分组统计全攻略

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

uniapp 卡片勾选

前言 公司的app项目使用的uniapp&#xff0c;项目里有一个可勾选的卡片功能&#xff0c;效果图如下&#xff1a; 找了一圈没找到什么太好的组件&#xff0c;于是就自己简单写了一个&#xff0c;记录一下。避免以后还会用到 代码 <template><view class"card-…

ELK 企业级日志分析系统 简单介绍

目录 一 ELK 简介 1&#xff0c; elk 是什么 2&#xff0c;elk 架构图 3&#xff0c;elk 日志处理步骤 二 Elasticsearch 简介 1&#xff0c; Elasticsearch 是什么 2&#xff0c; Elasticsearch 的核心概念 3&#xff0c; Elasticsearch 的原理 三 Logstas…

React Css 四种引入方式

React CSS 内联样式 优点 样式之间不会有冲突可以动态获取组件中state的值 缺点 要使用驼峰标识部分样式没有很友好的提示如果大量去写内敛样式 容易造成代码混乱伪类和伪元素无法编写 class HighCom extends PureComponent {constructor(props) {super(props)this.state…

labview技术交流-如何判断一个数是否为质数

问题起源 如何判断一个数是否为质数&#xff0c;其实并不难&#xff0c;只要你知道质数的定义&#xff0c;按照它的定义去编写代码就可以了。但是没有思路的人可能就会一直找不到方向&#xff0c;所以我就简单介绍一下。 还有我想吐槽的点&#xff0c;labview本来就是很小众的语…

oracle 删除表空间

在Oracle中删除表空间需要具备相应的权限&#xff0c;并且需要确保没有会话正在使用该表空间。以下是删除表空间的基本SQL命令&#xff1a; DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;请将tablespace_name替换为您想要删除的表空…

大数据之 Hive 快速搭建的详细步骤

Hive hive 搭建三种模式: 内嵌模式本地模式远程模式内嵌模式 Hadoop 和 Hive 整合 修改 hadoop/etc/下的 core-site.xml: <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><nam…