Unix에서의 날짜 변경 형식

Unix에서의 날짜 변경 형식

함수에 날짜를 변수로 전달하고 있습니다. 이 날짜를 다른 형식으로 변환하고 싶습니다. 예

DT=2015-12-08

DT유닉스 로 변환하고 싶습니다 08-dec-2015.

답변1

GNU 날짜를 가정합니다(즉, 내장되지 않은 Linux):

$ LC_TIME=C date --date=2015-12-08 +%d-%b-%Y
08-Dec-2015

답변2

내장되지 않은 Linux 또는 보다 일반적으로 GNU Date가 있는 시스템을 사용하는 경우 이를 사용하여 임의의 날짜 형식을 지정할 수 있습니다.

LC_ALL=C date -d "$DT" +%d-%b-%Y | tr A-Z a-z

GNU 날짜가 없는 경우(또는 있는 경우에도) 순수 쉘에서 이 작업을 수행할 수 있습니다.

case $DT in
  *-01-*|*-1-*) month=jan;;
  *-02-*|*-2-*) month=feb;;
  *-03-*|*-3-*) month=mar;;
  *-04-*|*-4-*) month=apr;;
  *-05-*|*-5-*) month=may;;
  *-06-*|*-6-*) month=jun;;
  *-07-*|*-7-*) month=jul;;
  *-08-*|*-8-*) month=aug;;
  *-09-*|*-9-*) month=sep;;
  *-10-*) month=oct;;
  *-11-*) month=nov;;
  *-12-*) month=dec;;
esac
echo "${DT##*-}-$month-${DT%%-*}"

관련 정보