2016-09-06 87 views
1

我试图打印出AM/PM格式的时间与此代码:猛砸时间格式HH:MM 12小时格式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

我该如何改变代码来做到这一点?或为什么不起作用?

+0

'%r'相当于'%I:%M:%S%p',为什么你认为它不应该显示秒? – Barmar

+0

看起来应该很明显,如果你只需要小时,分钟和am/pm,你需要做什么。 – Barmar

回答

4

格式输出日期:

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 
+0

它现在打印出HH:MM但不是AM或PM – AtSim1

+0

然后执行此操作:'date +“%I:%M%p”' –

1

如果您正在使用至少bash 4.2,你甚至不需要date

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

你可以只需更换以下行

echo $(date +"%r") 

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