time函数:获取当前日期。
头文件 | 原型 | 说明 | 返回值 |
---|---|---|---|
#include <time.h> | time_t time(time_t *timer) | 求出日期时间。 | 返回当前的日期时间。若日期时间无效,则返回-1。若timer不为NULL,则在timer指向的对象中也保存日期时间。 |
localtime 函数可以将 time_t类型的时间转换为 年 、月、日、时、分、秒等我们日常生活中使用的时间形式。
头文件 | 原型 | 说明 | 返回值 |
---|---|---|---|
#include <time.h> | struct tm *localtime(const time_t *timer) | 通过时间结构体类型将日期时间转换为相应的本地时间。 | 返回指向转换后时间的指针。 |
struct tm 结构体
#include <time.h>
/* 保存日期时间的时间结构体类型。 */
struct tm {
int tm_sec; // 秒 [0, 61]
int tm_min; // 分 [0, 59]
int tm_hour; // 时 [0, 23]
int tm_mday; // 日 [1, 31]
int tm_mon; // 距离1月份的月数 [0, 11]
int tm_year; // 距离 1900 年的年数
int tm_wday; // 距离星期日的天数 [0, 6]
int tm_yday; // 距离1月1日的天数 [0, 465]
int tm_isdst; // 夏令时
}
#include <time.h>
#include <stdio.h>
void put_date(void){
time_t current;
struct tm *local;
char wday_name[][7] = {"日", "一", "二", "三", "四", "五", "六"};
time(¤t);
local = localtime(¤t);
printf("%4d年%02d月%02d日 星期%s %02d:%02d:%02d", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday, wday_name[local->tm_wday], local->tm_hour, local->tm_min, local->tm_sec);
}
int main(void){
printf("今天是");
put_date();
putchar('\n');
return 0;
}
运行结果:
localtime 函数:从日历时间转换为分解时间
- localtime函数会返回转换后的 struct tm 类型对象的地址。
- 将其值转换为tm结构体类型的分解时间。
- 用公历表示分解时间。这时, tm_year + 1900,tm_mon + 1。由于星期日到星期六分别对应0到6,因此利用数组 wday_name 将表示星期的 tm_wday 转换为字符串年 、月、日、时、分、秒。
注:
转换后的 struct tm 类型对象已由localtime函数定义(在编写的程序中不能自行定义)。