12

我正在尝试编写一个以 am 或 pm 显示时间的 shell 脚本,而不是使用 date 命令显示的方式。我不确定我应该如何去做。我想对于初学者来说,如何从 date 命令中提取时间来操作它?以及如何提取一小时的数字来操纵它?

4

7 回答 7

12

你正在寻找的是

man strftime

这代表字符串格式时间,这是date使用的格式。

因此,要获取当前的 AM/PM,请使用以下命令:

date +"%p"

或者

ampm=`date +"%p"`
echo $ampm

小时可以是几种格式之一(你想要 12 小时还是 24 小时时间,是否前导零?)我猜你想要非前导零的 12 小时时间:

date +"%l"
于 2013-02-24T21:07:56.633 回答
9

您可以使用下面的一种以 AM 和 PM 格式打印最多几分钟的时间。

echo $(date  +"%I:%M %p")

输出 : 09:20 PM

或者

echo $(date  +"%r")

输出:09:20:09 PM

或 echo $(date +"%I %p")

输出:晚上 9 点

于 2015-02-23T03:09:20.810 回答
3

而不是使用 date 命令显示的方式

date命令采用格式字符串。供应将根据给定的时间值或当前 locale 的相应字符串%p显示“AM”或“PM” 。中午被视为“PM”,午夜被视为“AM”:

% date +'%H:%M %p'
08:01 am

“在引擎盖下”,这调用strftime(). 有关更多格式选项,请参见手册页。

于 2013-02-24T21:03:03.097 回答
2

这取决于区域设置。

LC_TIME="C" date +%l%p
LC_TIME="C" date +'%l:%M %p'
于 2017-12-06T17:39:34.753 回答
1

您可以使用 date 命令的“+”格式选项。例如:

 > date +%l%p
-> 7PM
于 2013-02-24T21:02:59.603 回答
1

要将 AM 或 PM 设为 am 或 pm 试试这个日期 +%#p

于 2019-12-12T10:30:31.397 回答
0

使用日期 +"%P" 大写 P 显示 am 或 pm

于 2020-04-15T16:14:47.997 回答