unix时间戳转换当前时间
/* 每个月的天数 */
const unsigned char g_monDay[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//新增的时间结构
typedef struct
{
unsigned short nYear;
unsigned char nMonth;
unsigned char nDay;
unsigned char nHour;
unsigned char nMin;
unsigned char nSec;
unsigned char DayIndex; /* 0 = Sunday */
} mytime_struct;
mytime_struct time_sec;
//判断是否闰年
unsigned char Is_leap_year(unsigned short year)
{
if ((year % 400) == 0) {
return 1;
} else if ((year % 100) == 0) {
return 0;
} else if ((year % 4) == 0) {
return 1;
} else {
return 0;
}
}
//年中的某个月有多少天
unsigned char day_of_mon(unsigned char month, unsigned short year)
{
if ((month == 0) || (month > 12)) {
return g_monDay[1] + Is_leap_year(year);
}
if (month != 2) {
return g_monDay[month - 1];
} else {
return g_monDay[1] + Is_leap_year(year);
}
}
//秒转换成日期
void sec_2_mytime(unsigned int utc_sec, mytime_struct *result, bool daylightSaving)
{
int sec, day;
unsigned short y;
unsigned char m;
unsigned short d;
unsigned char dst;
if (daylightSaving) {
utc_sec += 3600;
}
/* hour, min, sec */
/* hour */
sec = utc_sec % 86400;
result->nHour = sec / 3600;
/* min */
sec %= 3600;
result->nMin = sec / 60;
/* sec */
result->nSec = sec % 60;
/* year, month, day */
day = utc_sec / 86400;
for (y = 1970; day > 0; y++) {
d = (365 + Is_leap_year(y));
if (day >= d)
{
day -= d;
}
else
{
break;
}
}
result->nYear = y;
for (m = 1; m < 12; m++) {
d = day_of_mon(m, y);
if (day >= d) {
day -= d;
} else {
break;
}
}
result->nMonth = m;
result->nDay = (unsigned char) (day + 1);
}