当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 1:15 
头像

注册: 2006-08-24 21:25
帖子: 256
送出感谢: 0 次
接收感谢: 0 次
计算我自己家小孩的出生到现在时间的时间的脚本,发现用脚本做这个好麻烦阿,有没有方便点的方法阿,大家帮忙看看,当然了,换用perl python c 什么的就没意思了。主要就是玩阿
代码:
#!/bin/bash

begintime="2008-08-20 09:50:00"
nowtime="$(date '+%F %T')"
ddiff=$(($(date -d "$nowtime" +%s)-$(date -d "$begintime" +%s)))
diffyear=$(($(date -d "$nowtime" +%Y)-$(date -d "$begintime" +%Y)))
diffmonth=$(($(date -d "$nowtime" +%m|sed 's/^0//g')-$(date -d "$begintime" +%m|sed 's/^0//g')))
diffday=$(($(date -d "$nowtime" +%d|sed 's/^0//g')-$(date -d "$begintime" +%d|sed 's/^0//g')))
diffhour=$(($(date -d "$nowtime" +%H|sed 's/^0//g')-$(date -d "$begintime" +%H|sed 's/^0//g')))
diffminute=$(($(date -d "$nowtime" +%M|sed 's/^0//g')-$(date -d "$begintime" +%M|sed 's/^0//g')))
diffsecond=$(($(date -d "$nowtime" +%S|sed 's/^0//g')-$(date -d "$begintime" +%S|sed 's/^0//g')))
if [ $diffsecond -lt 0 ]
   then
   ((diffminute--))
   ((diffsecond = diffsecond+60))

fi
if [ $diffminute -lt 0 ]
   then
   ((diffhour--))
   ((diffminute = diffminute+60))

fi
if [ $diffhour -lt 0 ]
   then
   ((diffday--))
   ((diffhour = diffhour+24))

fi

if [ $diffday -lt 0 ]
   then
   ((diffmonth--))
case  $(date -d "$begintime" +%m|sed 's/^0//g') in
1|3|5|7|8|10|12)
   ((diffday = diffday+31))
;;
4|6|9|11)
   ((diffday = diffday+30))
;;
2)
 if [ $(($(date -d "$nowtime" +%Y)%4)) -eq 0 ]
   then
   ((diffday = diffday+29))
   else
   ((diffday = diffday+28))
fi
   ;;

esac

fi
if [ $diffmonth -lt 0 ]
   then
   ((diffyear--))
   ((diffmonth = diffmonth+12))

fi

allmonth=$((diffyear*12+diffmonth))
allday=$(($(($ddiff/(3600*24)))))
allhour=$(($(($ddiff%(3600*24)))/3600))
allminute=$(($(($ddiff%3600))/60))
allsecond=$(($(($ddiff%3600))%60))

echo "宝贝现在已经 $allday天 $allhour小时 $allminute分 $allsecond秒"
echo "第 $allmonth个月 $diffday天 $diffhour小时 $diffminute分 $diffsecond秒"
echo  "$diffyear年 $diffmonth个月 $diffday天 $diffhour小时 $diffminute分 $diffsecond秒"




页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 1:31 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
linux是 哪个合适用哪个,哪个方便用哪个,不会为了用xx而用xx
非要放着perl/python选用不太适合做这个事情的shell,违背Linux哲学


_________________
目前负债150多万


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 4:01 
头像

注册: 2006-08-24 21:25
帖子: 256
送出感谢: 0 次
接收感谢: 0 次
额,受教了。
linux哲学,好高深的话题阿。 :em02

不过我就是玩而已阿。又不是做什么项目。玩而已阿,哲学扯的好像有点远


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 18:39 
头像

注册: 2007-09-23 13:36
帖子: 364
送出感谢: 0 次
接收感谢: 2
我也写一个
代码:
#!/bin/bash

born=`date -d "2012-12-21 08:00:00" +%s`
now=`date +%s`

let age=$now-$born

echo $age 秒
let sec=$age%60
let age=$age/60

echo $age 分钟
let min=$age%60
let age=$age/60

echo $age 小时
let hour=$age%24
let age=$age/24

echo $age 天
let day=$age%365
let year=$age/365
echo $year 年 $day 天 $hour 小时 $min 分钟 $sec 秒


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 19:20 
头像

注册: 2006-08-24 21:25
帖子: 256
送出感谢: 0 次
接收感谢: 0 次
楼上的还是换汤不换药阿,而且还有一个很重要的错误。那就是闰年的问题
所以应该再加个判断,而且还有月份的计算才是最烦的,所以。如果要完善到没有错误的话,代码还是会很长阿

有没有vbs那样可以控制月份的方法,像我写的vbs脚本,简单点好像
代码:
xx=formatdatetime(now())

yy=formatdatetime("2008/8/20 9:50")

zz="宝贝已经 "&DateDiff("d", yy, now)&" 天了!!"

y=DateDiff("yyyy", yy, now)

m=DateDiff("m", yy, now)

t1=DateAdd("m", m, yy)

t4=now

t1=FormatDateTime(t1,1)

t4=FormatDateTime(t4,1)

if t1 > t4 then

t2=DateDiff("d", now, t1)

t3="宝贝现在:"&m&"个月差"&t2&"天   "

elseif t1 < t4 then

t2=DateDiff("d", t1, now)

t3="宝贝现在:"&m&"个月多"&t2&"天   "

else

t3="宝贝今天"&m&"个月了!!"



end if

msgbox zz,,t3


继续等高手


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 19:39 
头像

注册: 2007-09-23 13:36
帖子: 364
送出感谢: 0 次
接收感谢: 2
算年龄的话计算闰年没什么意义啊, 我是觉得直接当 365 算更合适


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-02 19:58 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
小朋友头像好久没更新了哈
这个搞这么精确干嘛


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 一个计算时间的脚本,又臭又长的,谁来帮忙改改阿。感觉好复杂
帖子发表于 : 2010-01-03 5:16 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
格式化成1970-01-01之后的秒数,然后做减法 :em04


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译