分类: C/C++
2011-03-24 20:42:30
(PHP 4 )
localtime -- 取得本地时间localtime() 函数返回一个数组,其结构和 C 函数调用返回的完全一样。localtime() 的第一个参数是时间戳,如果没有给出则使用从 time() 返回的当前时间。第二个参数是 is_associative,如果设为 0 或未提供则返回的是普通的数字索引数组。如果该参数设为 1 则 localtime() 函数返回包含有所有从 C 的 localtime 函数调用所返回的不同单元的结合数组。结合数组中不同的键名为:
"tm_sec" - 秒数
"tm_min" - 分钟数
"tm_hour" - 小时
"tm_mday" - 月份中的第几日
"tm_mon" - 年份中的第几个月,从 0 开始表示一月
"tm_year" - 年份,从 1900 开始
"tm_wday" - 星期中的第几天
"tm_yday" - 一年中的第几天
"tm_isdst" - 夏令时当前是否生效
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
#include
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
#include
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结果为: