时间的重要结构
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);//本地时间