格林威治时间转北京时间+根据日期计算星期几 C语言程序
#include <stdint.h>#include <stdio.h>
typedef struct
{
int year;
int month;
int day;
int hours;
int minutes;
int seconds;
int weekday;
}mytime_t;
mytime_t utctime;
unsigned int Year,Mon,Day,Shi,Fen,Miao,Zhou;
/// 返回值:1-7,对应周一到周天
uint8_t GetWeekDayNum(uint32_t year, uint8_t month, uint8_t day)
{
uint32_t weekday = 0U;
if (month < 3U)
{
/*D = { [(23 x month)/9] + day + 4 + year + [(year-1)/4] - [(year-1)/100] + [(year-1)/400] } mod 7*/
weekday = (((23U * month) / 9U) + day + 4U + year + ((year - 1U) / 4U) - ((year - 1U) / 100U) + ((year - 1U) / 400U)) % 7U;
}
else
{
/*D = { [(23 x month)/9] + day + 4 + year + - + - 2 } mod 7*/
weekday = (((23U * month) / 9U) + day + 4U + year + (year / 4U) - (year / 100U) + (year / 400U) - 2U) % 7U;
}
if(weekday == 0)
{
weekday = 7;
}
return (uint8_t)weekday;
}
void UTCToBeijing(mytime_t* time)
{
uint8_t days = 0;
if (time->month == 1 || time->month == 3 || time->month == 5 || time->month == 7 || time->month == 8 || time->month == 10 || time->month == 12)
{
days = 31;
}
else if (time->month == 4 || time->month == 6 || time->month == 9 || time->month == 11)
{
days = 30;
}
else if (time->month == 2)
{
if ((time->year % 400 == 0) || ((time->year % 4 == 0) && (time->year % 100 != 0))) /* 判断平年还是闰年 */
{
days = 29;
}
else
{
days = 28;
}
}
time->hours += 8; /* 北京时间比格林威治时间快8小时 */
if (time->hours >= 24) /* 跨天 */
{
time->hours -= 24;
time->day++;
if (time->day > days) /* 跨月 */
{
time->day = 1;
time->month++;
if (time->month > 12) /* 跨年 */
{
time->year++;
}
}
}
time->weekday = GetWeekDayNum(time->year, time->month, time->day);/* 重新计算周 */
}
void GMT_time()
{
//第一步:输入对应UTC时间
utctime.year = 2021;
utctime.month = 12;
utctime.day =27;
utctime.hours = 18;
utctime.minutes = 2;
utctime.seconds = 10;
utctime.weekday = 1;
//第二步:处理
UTCToBeijing(&utctime);//处理
//第三步:下面就是北京时间
Year =utctime.yea;
Mon =utctime.mont;
Day =utctime.da;
Shi =utctime.hour;
Fen =utctime.minutes;
Miao=utctime.second;
Zhou =utctime.weekda;
}
原文链接:https://blog.csdn.net/qq153471503/article/details/107157470
直接转载代码,这帖子越来越水了 加一点解读就好了 学习一下 做称文件上传附在后边更换
页:
[1]