web-dev-qa-db-ja.com

月番号を月名に変換

月番号を名前に変換する方法はありますか?

例:

2013-10-22は10月22日になります

GNU=の日付がなく、OSはAIXです。

3
peja11

いくつかのキーを値にマッピングするだけの場合は、配列を使用します

#!/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
umläute

最近の十分なバージョンのkshでは:

$ printf "%(%a %b %d %Y)T\n" 2013-10-22
Tue Oct 22 2013

(これはロケールに対応していることに注意してください。たとえばスペイン語のロケールでは、mar oct 22 2013

2

GNU 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は完全な月の名前です。

2
Lri