- 原型: struct tm *localtime(const time_t *calptr);
- 头文件 :<time.h>
- 返回值:
成功: struct 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代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一 */
int tm_yday; /* 从每年1月1日开始的天数– 取值区间[0,365],其中0代表1月1日 */
int tm_isdst; /* 夏令时标识符,夏令时tm_isdst为正;不实行夏令时tm_isdst为0 */
};
此结构体空间由内核自动分配, 而且不要去释放它.
失败: NULL
例1:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*
struct tm *localtime(const time_t *timer);
*/
int main()
{
//获取时间
time_t tt; //时间句柄变量 _int64
time(&tt); //获取时间句柄
tm *time = localtime(&tt); //将_int64(time_t)型时间句柄转换成当前时间
const char* ps[] = {
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
};
// 输出年月日 时分秒
printf("%d年%d月%d日 %d时%d分%d秒\n",time->tm_year+1900, time->tm_mon+1,time->tm_mday,
time->tm_hour,time->tm_min,time->tm_sec);
//输出当前时星期几
printf("当前是%s\n",ps[time->tm_wday]);
return 0;
}
例2 对时间格式进行调整
//...
time_t now_time = time(NULL); //获取系统时间
tm* t_tm = localtime(&now_time);
char* strTime= asctime(t_tm);
int ii=0;
for(ii=0;strTime[ii]!='\n';ii++)
{
if(strTime[ii]==' ')
strTime[ii]='_';
}
strTime[ii]='_';
printf("local time is: %s\n", strTime);
//...
以上只在linux环境下通过, C/C++通用, WINDOWS不清楚是否不同。这两个是标准C的函数,应该不会相差太大。