野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10370|回复: 7

时间戳的大问题

[复制链接]
发表于 2014-3-30 16:48:32 | 显示全部楼层 |阅读模式
在程序中为什么有367*月份/12中的367是什么意思
回复

使用道具 举报

发表于 2014-3-30 17:03:29 | 显示全部楼层
把整个代码帖出来看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-30 17:04:22 | 显示全部楼层
康锦 发表于 2014-3-30 17:03
把整个代码帖出来看看

u32 mktimev(struct rtc_time *tm)
{
        if (0 >= (int) (tm->tm_mon -= 2)) {        /* 1..12 -> 11,12,1..10 */
                tm->tm_mon += 12;                /* Puts Feb last since it has leap day */
                tm->tm_year -= 1;
        }

        return (((
                (u32) (tm->tm_year/4 - tm->tm_year/100 + tm->tm_year/400 + 367*tm->tm_mon/12 + tm->tm_mday) +
                        tm->tm_year*365 - 719499
            )*24 + tm->tm_hour /* now have hours */
          )*60 + tm->tm_min /* now have minutes */
        )*60 + tm->tm_sec-8*60*60; /* finally seconds */
        /*Add by fire: -8*60*60 把输入的北京时间转换为标准时间,
        再写入计时器中,确保计时器的数据为标准的UNIX时间戳*/
         
}
回复 支持 反对

使用道具 举报

发表于 2014-3-30 18:02:27 | 显示全部楼层
changtao 发表于 2014-3-30 17:04
u32 mktimev(struct rtc_time *tm)
{
        if (0 >= (int) (tm->tm_mon -= 2)) {        /* 1..12 -> 11,12,1..10  ...

这个是高斯算法,这里的式子已经进行一系列的推算的了,所以你如果仅仅从这式子来分析,是分析不出结果的。

这段代码,是linux内核自带的时间计算代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-30 18:04:53 | 显示全部楼层
栾端静 发表于 2014-3-30 18:02
这个是高斯算法,这里的式子已经进行一系列的推算的了,所以你如果仅仅从这式子来分析,是分析不出结果的 ...

想了这么久  还是没结果  看来高斯就是牛啊
回复 支持 反对

使用道具 举报

发表于 2014-3-30 18:14:50 | 显示全部楼层
changtao 发表于 2014-3-30 18:04
想了这么久  还是没结果  看来高斯就是牛啊

他是从 元年开始,考虑闰年关系来推算,我没认真推算,你感兴趣的话,可以自己推一次
回复 支持 反对

使用道具 举报

发表于 2014-12-21 22:07:10 | 显示全部楼层
没看懂这个算法,不过有一点好像明白一些,就是如果之前如果是1或2月 则从年那里借出12个月,比如2011年1月3日 =2010年13月,,3日,,
  这个算法没错,从超级终端来的显示结果来看,那个时间戳和我用手计算的是一样的,从1970年开始到此刻的秒数。。。。
  不过有这样一个问题,时间戳一定要以1970来作为元年吗???为什么要确保cnt中的数据为1970年开始的时间戳。。。。
回复 支持 反对

使用道具 举报

发表于 2016-3-29 14:14:55 | 显示全部楼层
yhtractor 发表于 2014-12-21 22:07
没看懂这个算法,不过有一点好像明白一些,就是如果之前如果是1或2月 则从年那里借出12个月,比如2011年1月 ...

好像是为了纪念谁吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-23 21:25 , Processed in 0.038720 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表