首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用bash计算经过的时间(以天、小时和分钟为单位)?(并很好地打印出来)

如何用bash计算经过的时间(以天、小时和分钟为单位)?(并很好地打印出来)
EN

Stack Overflow用户
提问于 2013-12-24 09:21:27
回答 1查看 740关注 0票数 0

我想知道自从使用shell (bash)以来,有多少天、几个小时和几分钟过去了。awk似乎是正确的工具,因为我需要计算、格式化和打印到命令行。

预期产出:

代码语言:javascript
复制
"Elapsed Time: "
"Days:  3123"
"Hours:  12"
"Minutes: 23"

算法思想:

代码语言:javascript
复制
time_now = get_time()
time_then = some_constant

diff = time_now - time_then     # this is all in seconds
days = round(  diff / 86400  )      # to nearest floor integer
print( days )    

diff -= diff - (days*86400)
hours = round(  diff/3600 )
print (hours)

diff = diff - (hours*3600)
minutes = round(  diff/60  )
print( minutes )

我如何在awk中做到这一点?我想出了这个:

代码语言:javascript
复制
date +%s | awk '{time_then = 815002800; diff = $1-time_then}; {print (diff/86400)}' | sed 's/\.[1-9]*//' | awk '{print "Days:  " $0 }'

sed移除十进制后的数字。总是向下舍入这个数字(所以它是一个整数)。

我怎么才能把时间和时间都塞进去呢?感觉一定有更好的方法。也许我用错了工具?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-24 09:38:16

您的算法可以直接用awk表示:

代码语言:javascript
复制
date +%s | awk '{
time_now = 815002800
time_then = some_constant

diff = time_now - time_then     # this is all in seconds
days = int(diff / 86400)        # to nearest floor integer
print days 

diff -= days * 86400
hours = int(diff/3600)
print hours

diff -= hours*3600
minutes = int(diff/60)
print minutes 
}'
代码语言:javascript
复制
will print

```javascript

九四三二

21

40

代码语言:javascript
复制
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20758155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档