中易网

shell中给出一个用秒表示的时间数,如何转换成时分秒表示的形式,如3600秒,如何表示成01:00:00的形式,急

答案:4  悬赏:20  
解决时间 2021-01-18 07:42
  • 提问者网友:原来太熟悉了会陌生
  • 2021-01-17 18:22
shell中给出一个用秒表示的时间数,如何转换成时分秒表示的形式,如3600秒,如何表示成01:00:00的形式,急
最佳答案
  • 二级知识专家网友:蓝房子
  • 2021-01-17 19:12
自己写个小程序吧
#include
#include
#include
main()
{
int min=0,second=0,hour=0;
printf("请输入秒:");
scanf("%d",&second);
hour=second/3600;
min=second/60%60;
second%=60;
printf("%02d:%02d:%02d",hour,min,second);
return 0;
}

或者写成shell 脚本来做也行
shell脚本内容如下:
#!/bin/bash
min=0
second=0
hour=0
if [ $# -ne 1 ]
then
read -p "input second:" second
elif [ $# -eq 1 ]
then
second=$1
fi
hour=$[$second / 3600]
min=$[$[$second/60]%60]
#min=$[$second / 60]
#min=$[$min%60]
second=$[$second % 60];
printf "%02d:%02d:%02d" $hour $min $second

可以直接运行 也可以带一个参数(该参数即为待转化的秒)
全部回答
  • 1楼网友:天凉才是好个秋
  • 2021-01-17 21:25
一行就可以搞定的:
echo "$((3600/3600)):$((3600%3600/60)):$((3600%3600%60))"
  • 2楼网友:孤独入客枕
  • 2021-01-17 20:48

写个shell脚本咯#!/bin/bash
seconds=$1
hour=$(echo "${seconds}/3600" | bc)
minute=$(echo "${seconds}/60%60" | bc)
sec=$(echo "${seconds}%60" | bc)
printf "%02d:%02d:%02d" $hour $minute $sec
  • 3楼网友:罪歌
  • 2021-01-17 20:03
取巧方式(利用UTC时间,给出的秒数比较小(0-57599)可以用这个):
date -d"@3600" | awk '{print $4}'| awk -F":" '{$1=$1-8;OFS=":"}END{print $0}'
最好自己直接写脚本:
cat hours.sh
#!/bin/bash
hour=$(( $1/3600 ))
min=$(( ($1-${hour}*3600)/60 ))
sec=$(( $1-${hour}*3600-${min}*60 ))
echo ${hour}:${min}:${sec}
运行sh hours.sh 3702得1:1:42
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息