时间的重要结构
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日,1代表1月2日,以此类推
int tm_isdst; //夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。
long int tm_gmtoff; //指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数。
const char *tm_zone; //当前时区的名字(与环境变量TZ有关)。
};
1. 日期、时间 转换为时间戳
已知:年(Year),月(Month),日(Day),时(Hour),分(Minute),秒(Second)
#include <time.h>
tm TM;TM.tm_sec = Second;//Second : [0,59]
TM.tm_min = Minute;//Minute : [0,59]
TM.tm_hour = Hour;//Hour : [0,23]
TM.tm_mday = Day;//Day : [1,31]
TM.tm_mon = Month - 1;//Month : [1,12]
TM.tm_year = Year - 1900;//Year : 实际年份
//时间戳time_t time = mktime(&TM);
2. 本地时间,格林尼治时间
#include <time.h>
tm *gmtTM, *localTM;
time_t t = time(NULL);//当前时间戳
gmtTM = gmtime(&t);//格林尼治时间
localTM = localtime(&t);//本地时间