提前认识软件开发(11) localtime与GetLocalTime

在C语言中,有两个获取当前时间的函数:localtime和GetLocalTime。它们在诸如对账一类的程序中应用很广。

本文对localtime和GetLocalTime进行较为详细的介绍,并举例说明它们的用法。

1.前言

在C语言中,获取当前系统时间的操作时有发生。例如,在对账程序中,需要在对账文件名中加入当天的日期及时间。一般而言,经常使用的获取当前时间的函数有两个:localtime和GetLocalTime。

本文分别介绍了localtime和GetLocalTime函数,并举例说明了它们的用法。

2. localtime和GetLocalTime函数介绍

2.1 localtime函数介绍

功能:把从1970-1-1零点零分(程序中是从1900年开始算的)到当前时间系统所偏移的秒数时间转换为日历时间。

说明:此函数获得的tm结构体的时间,已经进行过时区转化,成为了本地时间。

用法:struct tm *localtime(const time_t *clock)。

返回值:返回指向tm结构体的指针。

tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体,其定义如下:

#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()为负 */

      long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/

      const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/

};

#define _TM_DEFINED

#endif

2.2 GetLocalTime函数介绍

函数功能:该函数用来获取当地的当前系统日期和时间。

函数原型:void GetLocalTime(LPSYSTEMTIME lpSystemTime  // address of system times structure);

参数说明:

lpSystemTime:指向一个用户自定义包含日期和时间信息的类型为SYSTEMTIME的变量,该变量用来保存函数获取的时间信息。

SYSTEMTIME结构体的定义如下:

typedef struct _SYSTEMTIME

{

      WORD wYear;   //年

      WORD wMonth;  //月

      WORD wDayOfWeek;  //星期,0为星期日,1为星期一,2为星期二……

      WORD wDay;         //日

      WORD wHour;        //时

      WORD wMinute;      //分

      WORD wSecond;      //秒

      WORD wMilliseconds;  //毫秒

}SYSTEMTIME,*PSYSTEMTIME;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 时间
, localtime
, 对账
, 区间
, 时区函数
, 区间取值
, 当前
, c语言define的用法
, 时间区间
夏令时
getlocaltime、getlocaltime c、getlocaltime 头文件、c hook getlocaltime、getlocaltime linux,以便于您获取更多的相关知识。

时间: 2024-09-09 05:51:33

提前认识软件开发(11) localtime与GetLocalTime的相关文章

提前认识软件开发(1) 序言

序言 正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程. 1.为什么要写作本系列? 在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要. 在学校里面,我们欠缺的教育主要包括以下方面: 第一,对编码规范的要求.计算机编程课上,老师只要求学生能够编写程序实现既定的功能即可,几乎不会对编码规范提出要求,

让你提前认识软件开发(1):序言

序言           正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程.          1.为什么要写作本系列?        在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要.        在学校里面,我们欠缺的教育主要包括以下方面:        第一,对编码规范的要求.计算机编程

提前认识软件开发(33) 数据操纵语言(DML)

数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo ( employeeno varchar(20) not null, -- 员工工号 employeename varchar(20) not null, -- 员工姓名 employeeage int null -- 员工年龄

提前认识软件开发(16) 如何对程序进行优化

对程序进行优化,是软件开发工程师必然会涉及到的问题.那么为什么要对程序进行优化呢?原因有以下几个: 第一,在原程序基础之上新增.删除或修改了功能,需要改变原程序流程.客户需求随时可能会变化,今天已经实现的功能,说不定明天就要修改或去掉.落实到程序上面,就需要我们随时准备对写好的代码进行修改,而不要奢望写好之后就永远不要动了. 第二,原程序有bug.这类情况出现得非常的频繁,很多软件有1.0.2.0.3.0等版本,部分原因就是前面版本中程序有问题,在修改程序的过程中使得软件版本不断升级. 第三,原

让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码

第1部分 重新认识C语言 C语言中常用的文件操作函数总结及使用方法演示代码           在C语言中,有关文件操作的函数多达数十种,但并非每个函数都经常会被用到.        本文对实际软件开发项目中常用的C文件操作函数的用法进行了总结,并用实际的C代码来演示了它们的用法.   1. C语言中常用的文件操作函数总结 (1) fopen 作用:打开文件. 表头文件:#include <stdio.h> 定义函数:FILE *fopen(const char *path, const ch

让你提前认识软件开发(2):软件开发工程师常用的工具软件

第1部分 重新认识C语言 软件开发工程师常用的工具软件           有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了.         这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上

让你提前认识软件开发(47):同行评审

第3部分 软件研发工作总结 同行评审            在<浪潮之巅>这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格.         吴军老师所描述的内容,其实就是软件开发中的同行评审流程.         几乎在所有的软件项目中,都需要同行评审.一个人不管能力多强,看问题的角度总会受到限制,写出来的程序和文档等定不会是十全十美的.如

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.

提前认识软件开发(29) 数据库脚本文件的布局

"没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义: (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性. (2) 有利于提高产品的开发质量和效率,并降低开发成本. (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率. 可见,统一的.良好的脚本代码布局和风格不仅仅是个人主观美学或形式上的问题,而且影响到产品的质量,并涉及到自身脚本编程能力的提高. 1. 脚本布局顺序概述 在实际的软件开发