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

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 */  
}
埃斯提爱慕 回答时间:2015-4-30 21:55:44
提示: 作者被禁止或删除 内容自动屏蔽
wamcncn 回答时间:2015-4-30 22:11:13
学习一下,RTC就好

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版