函数名: localtime
功 能: 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间
用 法: struct tm *localtime(const time_t *clock);
程序例:
#include <stdio.h>
#include <stddef.h>
#include <time.h>
int main(void)
{
time_t timer;
struct tm *tblock;
timer = time(NULL);
tblock = localtime(&timer);
printf("Local time is: %s/n",asctime(tblock));
return 0;
}
执行结果:
Local time is: Mon Feb 16 11:29:26 2009
-----------------------------------------------------------------------------------------------------------------------------------
gmtime()是把日期和时间转换为格林威治(GMT)时间的函数
头文件:TIME.H
原形:struct tm *gmtime(long *clock);
例:
#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;
}
localtime和gmtime这两个函数采用了time.h中的一个tm结构体:
struct tm
{
int tm_sec; /* Seconds. [0-60] (1 leap second) */
int tm_min; /* Minutes. [0-59] */
int tm_hour; /* Hours. [0-23] */
int tm_mday; /* Day. [1-31] */
int tm_mon; /* Month. [0-11] */
int tm_year; /* Year - 1900. */
int tm_wday; /* Day of week. [0-6] */
int tm_yday; /* Days in year.[0-365] */
int tm_isdst; /* DST. [-1/0/1]*/
#ifdef __USE_BSD
long int tm_gmtoff; /* Seconds east of UTC. */
__const char *tm_zone; /* Timezone abbreviation. */
#else
long int __tm_gmtoff; /* Seconds east of UTC. */
__const char *__tm_zone; /* Timezone abbreviation. */
#endif
};
这两个函数的原型为:
struct tm *localtime(const time_t *timep);
struct tm *gmtime(const time_t *timep);
具体实现为:
localtime.c
---------------------------------------------------------
#include <stdio.h>
#include <time.h>
void cur_time(void);
int main(int argc,char **argv)
{
cur_time();
return 0;
}
void cur_time(void)
{
char *wday[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /* 获取当前时间 */
printf("%d年%02d月%02d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf("%s %02d:%02d:%02d/n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
}
---------------------------------------------------------
gcc localtime.c 后运行a.out结果为:
2007年12月26日星期三 11:07:15
gmtime.c
---------------------------------------------------------
#include <stdio.h>
#include <time.h>
void cur_time(void);
int main(int argc,char **argv)
{
cur_time();
return 0;
}
void cur_time(void)
{
char *wday[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
time_t timep;
struct tm *p;
time(&timep);
p=gmtime(&timep); /* 获取当前时间 */
printf("%d年%02d月%02d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf("%s %02d:%02d:%02d/n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);
}
-----------------------------------------------------------
gcc gmtime.c 后运行a.out结果为:
2007年12月26日星期三 11:08:34
---------------------------------------------------------------------------------------------------------------------------------
函数名: ctime
功 能: 把日期和时间转换为字符串
用 法: char *ctime(const time_t *time);
程序例:
#include
#include
int main(void)
{
time_t t;
time(&t);
printf("Today's date and time: %s/n", ctime(&t));
return 0;
}
------------------------------------------------------------------------
若在linux下使用本函数,需要include <time.h>头文件
-----------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
“函数原型
time_t time(time_t *timer);
函数说明
返回当前日历时间。值的编码方法是未指定的。如果日历时间不可用,则返回值(time_t)(-1)。如果参数timer不是空指针,则返回值也将存储到 timer所指向的对象中。”
那是什么原因导致time(NULL)返回的错误的值呢?上面说的日历时间不可用是什么意思,什么时候会导致日历时间不可用?
skyxie»
你看的那个是linux/unix平台的说明吧~
MSDN中:
"Return the time as seconds elapsed since midnight, January 1, 1970. There is no error return. "
请确认你的 mysavesturct.time 都被初始化了~ 如果没有初始化就存储, 就会出现1970.1.1
zteclx»
应该是变量没有初始化,很多新手都爱这样错。严格按软件工程来做
----------------------------------------------------------------------------------------------------
函数的 原型:
struct tm *localtime(const time_t *timep);
struct tm *gmtime (const time_t *timep);
头文件 : #include <time.h>
函数说 明:
gmtime () 将参数 timep 所 指的 time_t 结构中的信息转换成真实世界所使用的时间日期格式,然后将结果由结构 tm 返 回。结构 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-11 的月数 */
int tm_year; /* 1900~ 至今的 年数 */
int tm_wday; /*0-6 的星期数 */
int tm_yday; /*0-365 的天数 */
int tm_isdst; /* 日光节约时间的旗标 */
};
返回值 : 此函数返回未经时区转换的 UTC 时间结构 tm
例 :
#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;
}
具体实现为:
localtime.c
---------------------------------------------------------
#include <stdio.h>
#include <time.h>
void cur_time(void);
int main(int argc,char **argv)
{
cur_time();
return 0;
}
void cur_time(void)
{
char *wday[]={" 星期天 "," 星期一 "," 星 期二 "," 星期三 "," 星期四 "," 星 期五 "," 星期六 "};
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /* 获取当前时间 */
printf("%d 年 %02d 月 %02d 日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
printf("%s %02d:%02d:%02d/n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
}
---------------------------------------------------------
gcc localtime.c 后运行 a.out 结果为:
2007星 期三 年 12 月 26 日 11:07:15
gmtime .c
---------------------------------------------------------
#include <stdio.h>
#include <time.h>
void cur_time(void);
int main(int argc,char **argv)
{
cur_time();
return 0;
}
void cur_time(void)
{
char *wday[]={" 星期天 "," 星期一 "," 星 期二 "," 星期三 "," 星期四 "," 星 期五 "," 星期六 "};
time_t timep;
struct tm *p;
time(&timep);
p=gmtime (&timep); /* 获取当前时间 */
printf("%d 年 %02d 月 %02d 日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
printf("%s %02d:%02d:%02d/n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);
}
-----------------------------------------------------------
gcc gmtime .c 后运行 a.out 结果为:
2007星 期三 年 12 月 26 日 11:08:34