Bash时间格式为HH:MM,使用12小时制AM/PM显示

11
我试图用这段代码打印出AM/PM格式的时间:
 #!/bin/bash
 while [[ $# -gt 0 ]]
  do
  key="$1"


  case $key in
  --AMPM| --ampm)
  while true;
  do
   #Time in AMPM format:
   echo $(date +"%r")
   sleep 1s;
   clear;
done
esac
done

我得到了这个:HH:MM:SS 我想得到这个:HH:MM

如何更改代码以实现此目的?或者为什么它不起作用?


1
%r 相当于 %I:%M:%S %p,你认为为什么不应该显示秒数? - Barmar
如果你只想要小时、分钟和上午/下午,从那个看起来应该很明显你需要做什么。 - Barmar
3个回答

25

格式化日期输出:

date +"%I:%M %p"
date +"%I:%M %P"

在哪里:

%I     hour (01..12)
%M     minute (00..59)
%p     locale's equivalent of either AM or PM; blank if not known
%P     like %p, but lower case

现在它打印出HH:MM,但没有上午或下午。 - AtSim1
1
然后执行以下操作:date +"%I:%M %p" - Dave Grabowski

4

如果您使用的是至少 bash 4.2 版本,甚至不需要使用 date 命令:

printf '%(%I:%M %p)T\n'

1
你可以直接替换以下行。
echo $(date +"%r")

使用

echo $(date +"%r" | sed -e 's/\([0-9][0-9]:[0-9][0-9]\):[0-9][0-9]/\1/')

“echo” 是用来干嘛的?:-D 还有,就像其他人指出的一样:”date +%I:%M”。 - ckujau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接