UTC时间转换
哎呀,你说是不是很淡腾?一个时间非得搞到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
有了年分,就可以得到年差,得到年差就可以得到年差上的秒数,(处理闰年),月分可以得到总天数计算出秒数。
:lol自己来占楼啦,嘿嘿,主要是闰年的处理方法嘛。看一下,那个能被4除,不能被100除,能被400除的就是。
if((y%4==0)&&((y%100!=0)||(y%400==0)))
{
这个就是闰年
} 还是rtc方便一点 也算是一个内存和运算的矛盾 让我想起了这么个神奇的函数
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 */
} 我是来学习的 学习一下,RTC就好
页:
[1]