此函数转换时间戳的常数为秒,需要转换毫秒、微秒的时间戳要转换为秒后就可用正常使用了
定义时间戳天与月常量
/******* timestamp时间戳函数 开始**********/
#define SECOND_OF_DAY 86400 //一天多少秒
unsigned char DayOfMon[]={
31,28,31,30,31,30,31,31,30,31,30,31};
定义时间结构
struct StructTM
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_day;
int tm_mon;
int tm_year;
int tm_week;
};
时间结构赋值
StructTM StTime;//声明时间结构变量
StTime.tm_year = 2022;
StTime.tm_mon = 6;
StTime.tm_day = 16;
StTime.tm_hour = 20;
StTime.tm_min = 0;
StTime.tm_sec = 21;
时区常数,北京时间相对世界时间相差8个时区,使用得以下常数
unsigned long timeZone =8*3600;
通过时间结构体计算出星期几
/********************************************************************************************************
* FunctionName : printTime()
* Description : 从日期中计算出星期几
* EntryParameter : 时间结构地址.
* ReturnValue : 星期一为0,...,星期日为6
********************************************************************************************************/
int GetWeekFromDate(struct StructTM *tm) {
//在公式中day表示日期中的日数,mon表示月份数,year表示年数。
//注意:在公式中有个与其他公式不同的地方:
//把1月和2月看成是上一年的13月和14月,例:如果是2021-1-11则换算成:2020-13-11来代入公式计算。
int iWeek= (tm->tm_mon==1||tm->tm_mon==2)?
(tm->tm_day+2*(tm->tm_mon+12)+3*(tm->tm_mon+