koala889 发表于 2021-9-26 15:24

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

是闰年闰月自动转换,
还是需要人为处理呢?

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_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

必须需要的,这个很重要。可以参考例程的。
页: [1]
查看完整版本: 使用RTC需要考虑闰年闰月么?