たとえば、4を「4月」(月の名前の3文字の略語)にマップしたい
12527 次
3 に答える
21
これを試して :
MONTHS=(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
echo ${MONTHS[3]}
または、@ potongの提案に従って(月番号とインデックスを1対1で対応させる)
MONTHS=(ZERO Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
echo ${MONTHS[4]}
于 2012-04-11T01:14:38.560 に答える
14
#! /bin/bash
case $1 in
[1-9]|1[0-2]) date -d "$1/01" +%b ;;
*) ; exit 1
esac
于 2012-04-11T01:15:10.990 に答える
6
ロケールに依存する結果は、次のように取得できます。数値を日付の月の位置に入れ、日付として渡されて日付に出力され、任意の年と日を選択します(50年代と遠い未来から遠ざけ、20をはるかに超える日は避けてください)。それは実際の年である必要はありません:
i=10; date -d 2012/${i}/01 +%b
ここで、ロケールde_DEを使用すると、結果として次のようになります。
Okt
(私は4月を選択しませんでした。これは、現在の月を取得する日付のデフォルトであるため、-d -dateの形式が正しくないと、i = 10であっても、4月になります。経験したのでわかります。さらに、4月のドイツ語の名前は4月であるため、これから続く詳細の例としては適切ではありません:)
i=10; LC_ALL=C date -d 2012/${i}/01 +%b
これにより、月が国際標準スタイルで表示されます。
このソリューションの利点は、月の名前をBrumaire、Obamer、または国際化の試み(ドイツ語でMär、Mai、Okt、Dezなど)に変更する革命に耐えられることです。
于 2012-04-11T17:28:09.063 に答える