设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
大伙看看(sys/time.h)里的一个计算时间公式? ...
返回列表
查看:
1629
|
回复:
5
大伙看看(sys/time.h)里的一个计算时间公式?
[复制链接]
flyzhl000
flyzhl000
当前离线
积分
24
IP卡
狗仔卡
发表于 2004-8-17 21:36:50
|
显示全部楼层
|
阅读模式
line71:
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; /*now have seconds */
复制代码
请教那"year/4-year/100+year/400+367*mon/12+day)+
year*365-719499"是什么意思?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-8-18 11:56:40
|
显示全部楼层
难道你没有编写过计算那一年是闰年的程序吗?
看到“year/4-year/100+year/400”你就应该想到是和它相关了。
这一段程序旁边应该有注释,说明这段程序是干什么用的。但是你没有把注释贴出来,我也只是凭感觉和经验猜测了。
从整体上看,整个公式可以简化为:(((day*24+hour)*60+min)*60+sec),其中的day就是"year/4-year/100+year/400+367*mon/12+day)+year*365-719499",这样一个结构说明这是一个先把年月日转换成天数,然后再求出秒数的公式。既然要把年月日转换成天数,那就必然要考虑闰年的问题。不然这个转换公式就可以直接写成“year*365+mon*30+day",所以与
"year/4-year/100+year/400+367*mon/12+day)+year*365-719499"相比较,自己认真思考一下,自然就会明白为什么这样写了。
最后提示一下,unix系统中表示的时间是用1970年以后的秒数表示的。所以计算的天数还要减去公元1970年以前的天数,这个数就是719499。
回复
支持
反对
使用道具
举报
显身卡
lucifer
lucifer
当前离线
积分
750
IP卡
狗仔卡
发表于 2004-8-18 12:08:46
|
显示全部楼层
没有这么简单吧,即使是不算闰年,367*mon/12+day的话,一月1号可就是第31天了
回复
支持
反对
使用道具
举报
显身卡
wuhu
wuhu
当前离线
积分
362
IP卡
狗仔卡
发表于 2004-8-18 14:52:37
|
显示全部楼层
还要加上判断,不然怎么知道啊?
回复
支持
反对
使用道具
举报
显身卡
flyzhl000
flyzhl000
当前离线
积分
24
IP卡
狗仔卡
楼主
|
发表于 2004-8-18 22:28:42
|
显示全部楼层
>unix系统中表示的时间是用1970年以后的秒数表示的。所以计算的天数还要减去
听楼主这么一说,明白了,
我知道unix是1970年左右由贝尔实验室搞出来的,却不知那时间却是从那是算起,
谢啦,版主真是热心人.
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-8-19 18:08:04
|
显示全部楼层
最初由 lucifer 发表
没有这么简单吧,即使是不算闰年,367*mon/12+day的话,一月1号可就是第31天了
这一点我确实没有考虑到。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表