[技术问答]

使用RTC需要考虑闰年闰月么?

[复制链接]
3827|13
手机看帖
扫描二维码
随时随地手机跟帖
SDLin| | 2021-9-26 18:39 | 显示全部楼层
需要从软件上作转换的,可以参考以下:
/*
* This only works for the Gregorian calendar - i.e. after 1752 (in the UK)
*/
/*计算公历*/
void GregorianDay(struct rtc_time * tm)
{
        int leapsToDate;
        int lastYear;
        int day;
        int MonthOffset[] = { 0,31,59,90,120,151,181,212,243,273,304,334 };

        lastYear=tm->tm_year-1;

        /*计算从公元元年到计数的前一年之中一共经历了多少个闰年*/
        leapsToDate = lastYear/4 - lastYear/100 + lastYear/400;      

     /*如若计数的这一年为闰年,且计数的月份在2月之后,则日数加1,否则不加1*/
        if((tm->tm_year%4==0) &&
           ((tm->tm_year%100!=0) || (tm->tm_year%400==0)) &&
           (tm->tm_mon>2)) {
                /*
                 * We are past Feb. 29 in a leap year
                 */
                day=1;
        } else {
                day=0;
        }

        day += lastYear*365 + leapsToDate + MonthOffset[tm->tm_mon-1] + tm->tm_mday; /*计算从公元元年元旦到计数日期一共有多少天*/

        tm->tm_wday=day%7;
}

使用特权

评论回复
kkzz| | 2021-10-2 13:49 | 显示全部楼层
肯定需要的。         

使用特权

评论回复
hudi008| | 2021-10-2 13:50 | 显示全部楼层
代码里面就可以实现的。     

使用特权

评论回复
lzmm| | 2021-10-2 13:50 | 显示全部楼层
人为处理一下。            

使用特权

评论回复
minzisc| | 2021-10-2 13:50 | 显示全部楼层
你意思是要写入时间吗   

使用特权

评论回复
selongli| | 2021-10-2 13:50 | 显示全部楼层
在写入RTC的时候,需要考虑。         

使用特权

评论回复
fentianyou| | 2021-10-2 13:50 | 显示全部楼层
内部有RTc吗        

使用特权

评论回复
xiaoyaodz| | 2021-10-2 13:50 | 显示全部楼层
闰年闰月需要判断的。         

使用特权

评论回复
febgxu| | 2021-10-2 13:51 | 显示全部楼层
实现农历吗     

使用特权

评论回复
pixhw| | 2021-10-2 13:51 | 显示全部楼层
需要代码判断是否为闰年。            

使用特权

评论回复
sdlls| | 2021-10-2 13:51 | 显示全部楼层
代码进行转换的。            

使用特权

评论回复
koala889|  楼主 | 2021-10-14 11:02 | 显示全部楼层
SDLin 发表于 2021-9-26 18:39
需要从软件上作转换的,可以参考以下:
/*
* This only works for the Gregorian calendar - i.e. after 1 ...

恩,感谢!
这个我可能要慢慢试,刚学不久!

使用特权

评论回复
单片小菜| | 2021-10-19 09:36 | 显示全部楼层
必须需要的,这个很重要。可以参考例程的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

474

帖子

2

粉丝