我如何才能抽出总时间?


8

当我输入命令时,系统显示的时间为10:42 date +%R。我需要花费时间总计。就是说这642分钟。是否有任何命令或Shell脚本以分钟为单位显示总时间?

Answers:


11

为了只获取一天的总分钟数,我将使用以下命令:

$ date "+%H*60+%M" | bc

例:

$ date +%R
09:30
$ date "+%H*60+%M" | bc
570

技巧是格式化date输出以允许bc解释和计算公式。


2
如果您使用的echo $(date +"%H*60+%M") | bc,它的工作原理也zsh中;)
AB

@AB有一天,我将切换到zsh
Sylvain Pineau,

1
date "+%H*60+%M" | bc效果也一样。大概在任何外壳中。
Digital Trauma 2015年

@DigitalTrauma:简单,谢谢。我已经相应更新了答案。
西尔文·皮内

5

只是猛击:

IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))

强制将两个变量都视为以10为底,以避免shell因无效的八进制数0809


是的,echo $(( $(date "+%k * 60 + 10#%M") ))我的意思是说
Digital Trauma 2015年

1
是的,这没错。也许我的回答还多...教学
格伦·杰克曼

3
date +%R | awk -F ":" '{print ($1 * 60) + $2}'

要么

 echo $((($(date +%l) * 60 ) + $(date +%M)))

date +%l 将获得小时数,乘以60并加上分钟 date +%M


2

使用datebash

eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"

$ date
Fr 10. Jul 08:45:05 CEST 2015

$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525

使用date和z-shell(zsh):

IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"

% date
Fr 10. Jul 08:40:53 CEST 2015

% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520

1
@DineshDhananjayan您对我的回答满意吗?然后给我点赞(∧)。如果我能解决您的问题,那么如果您将我的答案标记为(✓),那就太好了。askubuntu.com/help/someone-answers ;)
AB

1
我认为您的zsh答案不正确:IFS=: set -- $(date +%T); echo $1返回08:16:52-您需要IFS=:; set ...
格伦·杰克曼

@glennjackman Ups,谢谢,已更正。:\
AB

1

您不需要使用IFS,可以通过以下方式进行操作:

date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo  "Total minutes: $(($H * 60 + $M))"

输出为:

Total minutes: 593

我已纠正您的答案。错误消息是bash: 9 17*60+: syntax error in expression (error token is "17*60+")
AB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.