月の数字を名前に変換する方法はありますか?
例:
2013年10月22日が10月22日になります。
GNUの日付はなく、私のOSはAIXです。
答え1
いくつかのキーのみを値にマップする必要がある場合は、配列を使用してください。
#!/bin/ksh
## cmdline argument is e.g. "2003-10-22"
DATE=$1
### extract day, month and year into separate variables
MONTHDAY=${DATE#*-}
YEAR=${DATE%%-*}
MONTH=${MONTHDAY%%-*}
DAY=${MONTHDAY#*-}
# an array to look up th month-names
# since month-numbers start with 1, the first element in the array is invalid.
set -A monthnames invalid Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## perform the lookup
MONTHNAME=${monthnames[${MONTH}]}
## display "<Month> <DAY>"
echo ${MONTHNAME} ${DAY}
答え2
グヌdate
:
$ date -d 2013-10-22 '+%b %-d'
Oct 22
OS XとFreeBSD date
:
$ date -jf %F 2013-10-22 '+%b %-d'
Oct 22
%b
月名の略語で、%B
完全月名です。
答え3
新しいバージョンを使用してくださいksh
。
$ printf "%(%a %b %d %Y)T\n" 2013-10-22
Tue Oct 22 2013
(ロケールを認識します。たとえば、スペイン語ロケールでは出力されますmar oct 22 2013
)