一、localtime函数
原型: 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
time_t now ; //定义一个time_t数据用来存放时间戳
struct tm *tm_now ; //定义一个tm类型结构体指针用于从时间戳获取格式化时间(年月日时分秒)
time(&now) ; //将此时的时间戳存入now 此时的时间戳(1970年01月01日00时00分00秒到现在的秒数)
tm_now = localtime(&now) ; //根据时间戳,解析出一套tm结构体类型的时间数据并赋给tm_now
二、效果如下
2022年06月09日
13:05:41
星期四
三、全部代码如下:
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <windows.h>
int main() {
char weekday[8] = {0};
while(1) {
Sleep(1000);
time_t now;
struct tm* now_time;
time(&now);
now_time = localtime(&now);
if(now_time == NULL) {
perror("localtime:");
return -1;
}
switch(now_time->tm_wday) {
case 0:strcpy(weekday,"星期天");break;
case 1:strcpy(weekday,"星期一");break;
case 2:strcpy(weekday,"星期二");break;
case 3:strcpy(weekday,"星期三");break;
case 4:strcpy(weekday,"星期四");break;
case 5:strcpy(weekday,"星期五");break;
case 6:strcpy(weekday,"星期六");break;
default:return -1;
}
system("cls");
printf("%04d年%02d月%02d日\n%02d:%02d:%02d\n%s"\
,now_time->tm_year + 1900
,now_time->tm_mon + 1
,now_time->tm_mday
,now_time->tm_hour
,now_time->tm_min
,now_time->tm_sec
,weekday);
}
return 0;
}