你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

UTC时间转换

[复制链接]
黄小狼 提问时间:2015-4-30 15:54 /
哎呀,你说是不是很淡腾?一个时间非得搞到7-8个字节才表示出来,真是我乐个去呀!
20150430154410
这个时间好长一串哦,字节少了还表示不了。怎么办呢?

传说中的UTC来了,哎哟,什么UTC?不是RTCk吗?
。。。
UTC是从1970-1-1开始计时的,俺们都是中国人,东8区是不?
那就是1970-1-1 8点开始计时的吧?

废话不说了,反正就是UTC用一个32位字节表示时间,是从1970-1-1 8点开始到某一时间点的总秒数。

一看好像郁闷了,电脑上好整呀,一个转换就过去了,单片机上咋搞?

先看一下思路吧:
1、UTC是总秒数,那么只要知道有多少天就可以了,因为每天的秒数是固定的
2、平年有365天,还有一个366天的年怎么办?还好还好,有闰年算法不是?

UTC--->RTC
有时间的总秒数了,那么就可以得到天数,有了天数就可以计算出年数(注意闰年),多余的天数就在这一年中分配到月上去。
RTC--->UTC
有了年分,就可以得到年差,得到年差就可以得到年差上的秒数,(处理闰年),月分可以得到总天数计算出秒数。



收藏 评论6 发布时间:2015-4-30 15:54

举报

6个回答
黄小狼 回答时间:2015-4-30 15:56:50
自己来占楼啦,嘿嘿,主要是闰年的处理方法嘛。看一下,那个能被4除,不能被100除,能被400除的就是。
if((y%4==0)&&((y%100!=0)||(y%400==0)))
{
这个就是闰年
}
wu1169668869 回答时间:2015-4-30 16:29:16
还是rtc方便一点 9.gif
wu1169668869 回答时间:2015-4-30 16:31:39
也算是一个内存和运算的矛盾
Mandelbrot_Set 回答时间:2015-4-30 16:37:09
让我想起了这么个神奇的函数
time_t mktime (  int year, int mon,  
                                                                 int day,  int hour,  
                                                                 int min,  int sec)  
{  
                if (0 >= (int) (mon -= 2)) {    /* 1..12 -> 11,12,1..10 */  
         mon += 12;      /* Puts Feb last since it has leap day */  
         year -= 1;  
    }  
    return (((  
             (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +  
             year*365 - 719499  
          )*24 + hour /* now have hours */  
       )*60 + min /* now have minutes */  
    )*60 + sec; /* finally seconds */  
}
dsjsjf 回答时间:2015-4-30 21:55:44
我是来学习的
wambob 回答时间:2015-4-30 22:11:13
学习一下,RTC就好

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版