2016-09-06 91 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/')