unix下日期更改格式

unix下日期更改格式

我将日期作为函数中的变量传递。我想以不同的格式转换该日期。例子

DT=2015-12-08

想转换DT08-dec-2015Unix。

答案1

假设 GNU 日期(即非嵌入式 Linux):

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

答案2

如果您使用的是非嵌入式 Linux,或者更一般地说是具有 GNU 日期的系统,您可以使用它来排版任意日期。

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

如果您没有 GNU 日期(或者即使有),您可以在纯 shell 中执行此操作。

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%%-*}"

相关内容