Welcome

首页 / 软件开发 / 数据结构与算法 / 提前认识软件开发(11) localtime与GetLocalTime

提前认识软件开发(11) localtime与GetLocalTime2015-01-24在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_DEFINEDstruct 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;