LinuxSir.cn,穿越时空的Linuxsir!

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

请问下linux下有没有时间运算命令或程序

[复制链接]
发表于 2009-8-13 10:58:53 | 显示全部楼层 |阅读模式
我想问下linux下有没有 时间计算命令。
比如我们可以用bc命令对整数和实数进行加减运算,请问有没有linux下的 时间运算命令 如 52:13-47:58 可以得出结果为: 04:15
发表于 2009-8-14 15:38:38 | 显示全部楼层
Post by onelay;2015703
我想问下linux下有没有 时间计算命令。
比如我们可以用bc命令对整数和实数进行加减运算,请问有没有linux下的 时间运算命令 如 52:13-47:58 可以得出结果为: 04:15


可以自己写:
  1. #!/bin/bash

  2. date2unix () {
  3.   date --utc --date "$1" +%s
  4. }

  5. # unit of time in second:
  6. unit=1;
  7. dte1=$(date2unix $1)
  8. dte2=$(date2unix $2)
  9. diffSec=$((dte2-dte1))
  10. echo $((diffSec/unit))
复制代码

  1. $ sh timediff -s "6:47:32" "6:53:26"
  2. 354
复制代码

应该还有很多改进的地方。自己玩吧。
回复 支持 反对

使用道具 举报

发表于 2009-8-18 22:16:15 | 显示全部楼层
我接着楼上的代码补充了下: 能输出 HH:MM:SS的格式

#!/bin/bash

date2unix () {
  date --utc --date "$1" +%s
}
abs()  
{
  echo ${1#-};
}
# unit of time in second:
unit=1;
dte1=$(date2unix $1)
dte2=$(date2unix $2)
diffSec=$((dte2-dte1))
echo $((diffSec/unit))

# time format in %H%M%S
i_unit=60
HH=$((diffSec/3600))
MM=$(((diffSec-3600*$HH)/60))
SS=$((diffSec%60))
echo "`abs $HH`:`abs $MM`:`abs $SS`"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-19 01:48:10 | 显示全部楼层
谢谢两位!

你们写程序是否像普通人写文章一样,如何达到这种境界?

时间长不读不写程序就生疏,有没有一些像体育运动的热身运动一样能少花时间而能不生锈,比如有没有一些简短,精华的程序,每天或每隔一段时间读一下写一下而不会让大脑反感枯燥?

c语言我在找内置函数的完整源代码,想知道这些函数的原始工作原理,但这方面的资料太少,windows根本没有,linux的c函数源代码每一个都是支离破碎中间还夹杂汇编语言。请问你们有去研究吗,任何一个内置函数的完整源代码都可以,我想知道究竟是怎么跟操作系统联系在一起的!
回复 支持 反对

使用道具 举报

发表于 2009-8-19 09:42:31 | 显示全部楼层
LS想看libc的实现可以看看这本
http://www.china-pub.com/195624
回复 支持 反对

使用道具 举报

发表于 2009-8-19 18:24:28 | 显示全部楼层
偶以前是做了大半年程序员,现在转做系统管理了,C都忘光了。你说的帮不到了,程序主要是要多写,多看别人代码就行了。
回复 支持 反对

使用道具 举报

发表于 2009-8-27 05:47:58 | 显示全部楼层
写code和写文章思路差很远吧。

只能说写得多就熟。我觉得语言这东西用就会记得。各编程图书馆使用也一样。而且很少是没有前人code可以参考的情况。

比起念大时要上课、现在写c的机会很少了。也从来没有特别去完整研究c library的原始码(除了有些数据结构过去因为上课看了一下)。反正开源码都让你随时学习。但如果没有良好理论基础、直接看原始码不见得有什么帮助。特别你说的事情同时牵及OS理论问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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