LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2420|回复: 6

取系统时间什么函数能取到毫秒级的?

[复制链接]
发表于 2004-12-30 15:21:27 | 显示全部楼层 |阅读模式
我需要取到系统时间,找了一下,只找到一个函数time((time_t *)0)来取到格林尼治时间1970年1月1日0:00开始到现在的秒数.可是最好取到毫秒级,不知道还有没有别的函数能做到?请教各位.大虾了.预祝各位LinuxSir新年快乐!
发表于 2004-12-30 16:03:23 | 显示全部楼层
select
发表于 2004-12-30 18:26:12 | 显示全部楼层
gettimeofday
 楼主| 发表于 2004-12-31 09:46:13 | 显示全部楼层
多谢楼上两位了。我看了回复后也看了你们给的两个函数。觉得可能我没说清楚我的问题。 我现在做的是 一个链表。需要定时清除在链表中超时的节点。 所以我准备添加节点时在链表节点中保存一个当前的系统时间。然后过一段时间用一个链表扫描线程扫描链表.用当前的系统时间和节点中的系统时间相减,如果值大于规定的超时值,就删除当前节点.这样的话,用select 就不大合适了。而用gettimeofday就可以了.以前我理解错了.我以为gettimeofday只是取得一天里的时间,这样当到0点时,就不好处理了。现在试验了一下,发现还是和函数time 一样,取的是 从1970年来的秒数以及每一秒里的毫秒。
再次多谢二位了
发表于 2004-12-31 11:06:01 | 显示全部楼层
作一下转换就行了。
由于Linux/Unix系统保存的是1970年以来的秒数,这个数字很大,如果直接以毫秒为单位保存,恐怕早就溢出了。所以系统时间是分成两个字段,一个以微秒表示,累计到1秒后,再累加到另一个以秒为单位的字段。
你把gettimeofday的结果换算成毫秒就行了。直接换算是不行的。这个数字太大,会溢出。作一下变通吧。
 楼主| 发表于 2005-1-4 11:13:04 | 显示全部楼层
Post by kj501
作一下转换就行了。
由于Linux/Unix系统保存的是1970年以来的秒数,这个数字很大,如果直接以毫秒为单位保存,恐怕早就溢出了。所以系统时间是分成两个字段,一个以微秒表示,累计到1秒后,再累加到另一个以秒为单位的字段。
你把gettimeofday的结果换算成毫秒就行了。直接换算是不行的。这个数字太大,会溢出。作一下变通吧。

楼上说的对,我现在做的方法是分别保存秒和毫秒数,比较时先求秒的差值,在转换成毫秒 ,和毫秒的差值相加。由于秒的差值较小(根据要求可能只有几秒钟),所以就不会出现溢出了。多些楼上的兄弟了。
发表于 2005-4-30 11:17:49 | 显示全部楼层
可否说的详细一点,具体的操作,最好是能把代码贴出来
回复 支持 反对

使用道具 举报

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

本版积分规则

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