将date bash命令中的秒数舍入到下限

时间:2018-06-11 15:55:30

标签: linux bash shell date

我有一个日期命令来显示小时分钟和秒,类似于

date -u +"%H%M%S" | cut -c 1-6

它会显示一些内容,例如155344。我需要输出总是四舍五入到下限,所以对于上面的例子我需要155340

即使上面的命令产生155349,我的输出也应该显示最低限度155340而不是155350

等待开悟。

3 个答案:

答案 0 :(得分:2)

由于您基本上想用0替换字符串的最后一个字符,因此您可以使用shell parameter expansion执行此操作:

$ timestamp=$(date -u +"%H%M%S")
$ echo "$timestamp"
161333
$ echo "${timestamp%?}0"
161330

您也不需要cut,因为date命令的输出总是应该是六个字符长。

答案 1 :(得分:0)

import os import subprocess out_dir = os.path.join(os.getcwd(), 'qr') if not os.path.exists(out_dir): os.makedirs(out_dir) out_file = os.path.join(out_dir, 'datamatrix.png') cmd1 = ['zint' '-o', out_file, '-b', '20', '--notext', '-d', '"data_to_encode_goes_here"'] rc = subprocess.call(cmd1)

这也有效,但修复它是一个阴暗的黑客。

答案 2 :(得分:-1)

取输出,整数除以10,然后乘以10,所以如果你将该值存储为output=$(( $output / 10 )) output=$(( $output * 10 ))

$(())

$(( $(date -u +"%H%M%S" | cut -c 1-6) / 10 * 10 )) 是bash中的整数运算,并且是截断而不是舍入。

这可以写成一行

python manage.py collectstatic