struct tm->time() localtime() gmtime()

struct tm->time() localtime() gmtime()

struct tm {
int tm_sec; /*代表目前秒数,正常范围为0-59,但允许至61秒 */
int tm_min; /*代表目前分数,范围0-59*/
int tm_hour; /*从午夜算起的时数,范围为0-23*/
int tm_mday; /*目前月份的日数,范围01-31*/
int tm_mon; /*代表目前月份,从一月算起,范围从0-11*/
int tm_year; /*从1900 年算起至今的年数*/
int tm_wday; /*一星期的日数,从星期一算起,范围为0-6 */
int tm_yday; /*从今年1月1日算起至今的天数,范围为0-365*/
int tm_isdst; /*日光节约时间的旗标*/
};

time()

编程语言C语言中的函数。

头文件:time.h

函数原型:time_t time(time_t * timer)

功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。

补充说明:time函数的原型也可以理解为 long time(long *tloc),即返回一个long型整数。因为在time.h这个头文件中time_t实际上就是:

#ifndef _TIME_T_DEFINED
typedef long time_t; /* time value */
#define _TIME_T_DEFINED /* avoid multiple defines of time_t */
#endif

即long。

#include <stdio.h>
#include <stddef.h>
#include <time.h>
int main(void)
{
time_t timer;//time_t就是long int 类型
struct tm *tblock;
timer = time(NULL);//这一句也可以改成time(&timer);
tblock = localtime(&timer);
printf("Local time is: %s\n",asctime(tblock));
return 0;
}

localtime()

功 能: 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间 。

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

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

返回值:返回指向tm 结构体指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体.

需要注意的是年份加上1900,月份加上1。

#include<time.h>
#include<stdio.h>
int main()
{
struct tm *t;
time_t tt;
time(&tt);
t=localtime(&tt);
printf("%4d年%02d月%02d日 %02d:%02d:%02d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
return 0;
}

gmtime()

头文件:time.h

原型:struct tm *gmtime(long *clock);

功能:把日期和时间转换为格林威治(GMT)时间的函数。将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

此函数返回的时间日期未经时区转换,而是UTC时间。

返回值 返回结构tm代表目前UTC 时间

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(void)
{
time_t t;
struct tm *gmt, *area;
tzset(); /* tzset()*/
t = time(NULL);
area = localtime(&t);
printf("Local time is: %s", asctime(area));
gmt = gmtime(&t);
printf("GMT is: %s", asctime(gmt));
return 0;
}
时间: 2024-10-01 10:31:13

struct tm->time() localtime() gmtime()的相关文章

C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换

使用gmtime函数或localtime函数将time_t类型的时间日期转换为structtm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年.月.日等数据.gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读. gmtime函数的原型如下: struct tm *gmtime(time_t*timep); localtime函数的原型如下: struct tm *localtime(time_t*tim

时间操作(struct tm、time_t)

1.在标准C/C++中,我们可通过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代表一月) - 取

time_t和struct tm之间的转换

time_t到struct tm的转换: #include <time.h> struct tm *localtime(const time_t *timep); struct tm到time_t的转换: #include <time.h> time_t mktime(struct tm *tm); time_t timep = time(NULL);可以获得从此刻距1970-01-01 00:00:00 +0000 (UTC)时间点的秒数. 示例程序: #include <

time_h && struct tm

/* time_h的使用 */ //第一种方式 time_t timer1; time(&timer1); //第二种方式 time_t timer2; timer2 = time(NULL); //第三种方式 time_t timer3 = time(NULL); /*struct tm 的使用*/ struct tm *now; timer_t timer = time(NULL); now = localtime(&timer); printf("%s\n",as

将日期和时间作为 struct tm型的值直接向二进制文件进行读写

#include <stdio.h> #include <time.h> char data_file[]="D:\\%\\datetime.dat"; void get_data(void) { FILE *fp; time_t t; if((fp = fopen(data_file,"r")) == NULL) printf("本程序第一次运行!\n"); else { fread(&t,sizeof(time

localtime和gmtime

// temp10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> #include <stdio.h> #include <time.h> int _tmain(int argc, _TCHAR* argv[]) { //宇宙标准时间是格林威治时间. //为了适应地球上的个个地方人们的生活作息,人们发明了本地时间. //本地时间,是基于格林威治时间并根据太阳升落修正后

localtime 和 localtime_r

#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; //注意下面两行的区别 struct tm* ptm = localtime(&tNo

localtime 和 localtime_r 的区别

转自:http://blog.csdn.net/maocl1983/article/details/6221810 #include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tN

C语言的setlocale和localtime函数(C++也可用)

Example 1234567891011121314151617181920212223242526272829303132 /* setlocale example */ #include <stdio.h> /* printf */ #include <time.h> /* time_t, struct tm, time, localtime, strftime */ #include <locale.h> /* struct lconv, setlocale,