如何格式化日期时间输出,以便 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),请使用代替。%I
scale=1
%H
%I
这不会为您提供小于 10 小时的任何填充(前导零或空格),并且除法会向下截断(11:35 将报告为“11.5”,而不是“11.6”)。