原创 利用日-月-年解算yearday 的算法

2010-4-11 11:10 1042 12 13 分类: 消费电子

在 embed 的世界中, code size 总是珍贵的.
引入 time.h 的 mktime(), 在vc中似乎是一个必然的下意识的选择.
在一棵 arm7中可能就要颇费思量. 有必要为此牺牲 >500 bytes 的 size 吗.
这完全取决我们目的达到与否.

在网络上找到的一段代码, 通过 day,month,year 解算 yearday 就是令人愉快的小size function, 满足要求, 代码如下:

/// calc yearday from day/month/year
U16 calc_yearday(U8 day, U8 month, U16 year)
{
        U16 sum = 0;
        U8 leap = 0;
       
        // calc month_sum + current day
        switch(month)
        {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:break;
        }
        sum = sum + day;  
       
        // leap year?
        if( (year%400==0) || ( (year%4==0)&&(year%100!=0)) )
            leap=1;
        else
            leap=0;
        if( (leap==1) && (month>2) )
            sum++;
       
        return sum;
}

文章评论1条评论)

登录后参与讨论

用户1277994 2010-3-29 13:39

很好很实用! 顶!
相关推荐阅读
allen_zhan 2023-02-27 19:08
对"三极管"译名由来的探讨
想讨论一个有意思的话题:今天中国大陆的电子业界, 为何将 BJT 称呼为 "三极管"? 或因其象形, 前辈自行进行随意的不严谨定义么? 带着疑问我们做了一下延伸查阅, 或得出这样的结论, 即中译名"三...
allen_zhan 2023-02-19 18:15
对知乎提问"为何三极管的一个PN结工作在反偏"的回复
将这个回复, 也发表在博文中, 作为自己的一个学习笔记叭.知乎问题: "三极管里面的PN结相当于二极管,为什么里面PN结加反向电压也能导通?"我的回复:首先, 二极管的"反向"概念, 容易给初学者某种...
allen_zhan 2023-02-18 10:17
从肖特基二极管到PN结与三极管
最近数个工作日的兴趣是回顾电子基础器件的发明/发展历史, 期待夯实技术基础的底蕴. 在学习与搜索资料的过程中, 顺便对知乎的一个同学的基础问题, 进行了回复. 不小心回复一下就成了千字文, 觉得挺有趣...
allen_zhan 2023-01-28 11:53
微功率 ISM 频率探讨相关文档组总结
不知不觉, 自开启关于微功率频率的话题起, 即从第一份文章写就到今天总结之日, 已经接近 10 个工作日左右. 早先的想法是对工程界未来的微功率设备相关项目, 从项目规划开始, 对选择系统, 频率, ...
allen_zhan 2023-01-27 22:50
关于 LoRa 应用场景的讨论
说明: 本文中斜体部分表示来自公告文件的部分内容剪贴或合并整理.1. "第52号文" 对 470MHz 的约束引自 如下:(四)民用计量仪表限在建筑楼宇、住宅小区及村庄等小范围内组网应用,任意时刻限...
allen_zhan 2023-01-25 13:24
ISM 频段中 2.4G 与 5.8GHz 设备的使用与限制
说明: 本文中斜体部分表示来自公告文件的部分内容剪贴或合并整理.1. ISM 频段定义中的 2.4G 与 5.8GHz正如同 文中确定的, 2.4G, 5.8GHz 属于中国大陆 ISM 频段的定义...
我要评论
1
12
关闭 站长推荐上一条 /2 下一条