一 测试代码
#include <time.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
struct tm *tp;
time_t t = time(NULL);
tp = localtime(&t);
printf("%d/%d/%d\n",tp->tm_mon+1,tp->tm_mday,tp->tm_year+1900);
printf("%d:%d:%d\n",tp->tm_hour,tp->tm_min,tp->tm_sec);
return 0;
}
二 struct tm的内容
struct tm
{
int tm_sec; /* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; /* Minutes: 0-59 */
int tm_hour; /* Hours since midnight: 0-23 */
int tm_mday; /* Day of the month: 1-31 */
int tm_mon; /* Months *since* january: 0-11 */
int tm_year; /* Years since 1900 */
int tm_wday; /* Days since Sunday (0-6) */
int tm_yday; /* Days since Jan. 1: 0-365 */
int tm_isdst; /* +1 Daylight Savings Time, 0 No DST,
* -1 don't know */
};
三代码解析
time_t 实际上是一个long类型
我们通过time(NULL)获取当前日期的秒数并且将该秒数赋值给t
然后调用localtime(&t)将秒数进行转化,并返回处理好数据的结构体的指针;
然后通过返回的指针访问结构中的变量从而获取对应的时间日期;
值得注意的是年份的初始时间是以1900年为基准的,因此如果我们获取到的时间如1900年,结构体中的tm_year实际上是0年;