将日期输出分钟格式化为一小时的小数部分

将日期输出分钟格式化为一小时的小数部分

如何格式化日期时间输出,以便 11:30 打印为 11.5?

答案1

这是一种方法。

$ date
Fri Mar  1 19:30:36 STD 2019
$ date '+%H %M' | awk '{ printf "%d.%d\n",$1,$2/60*10 }'
19.5
$

较短的版本

$ date '+%H %M'|awk '{$0=$1"."int($2/6)}1'
19.5
$

答案2

一个简单的解决方案是使用 12 小时制,但不包括必需的“AM”/“PM”指示器

date +'scale=1; %I + %M/60' | bc

当然,您可以捕获变量中的输出:

dec_time=$(date +'scale=1; %I + %M/60' | bc)

这只是使用小时 ( ) 加上小时的一小部分(分钟除以 60)的  bc表达式来执行计算器 ( )。指定您需要一位小数。对于 24 小时制(小时范围从 0 到 23),请使用代替。%Iscale=1%H%I

这不会为您提供小于 10 小时的任何填充(前导零或空格),并且除法会向下截断(11:35 将报告为“11.5”,而不是“11.6”)。

相关内容