使用KornShell将月份数转换为日期

时间:2013-11-13 12:26:46

标签: shell date unix scripting ksh

我正在尝试将月号转换为名称,但它将输出作为当前月而不是变量中给出的日期。

KornShell(ksh)代码:

datep= 2013-10-22
echo $datep |printf "%(%B)T\n"

2 个答案:

答案 0 :(得分:1)

printf不读取标准输入,因此假定今天的日期为%T格式的默认参数;你需要提供日期作为参数。

printf "%(%B)T\n" "$datep"

答案 1 :(得分:0)

这样做:

$ datep="2013-10-22"
$ date -d"$datep" "+%B"
October

根据man date

  

-d, - date = STRING

     

显示时间由STRING描述,而不是'现在'

所以我们得到:

$ date -d"$datep"
Tue Oct 22 00:00:00 CEST 2013

然后你说你想要%B,也就是man date

  

<强>%B

     

locale的完整月份名称(例如,1月份)

所以这只是在字符串末尾使用格式的问题。

其他例子:

$ date -d"$datep" "+%Y" #year
2013
$ date -d"$datep" "+%F" #date
2013-10-22
$ date -d"$datep" "+%T" #time (if not given, gets the default)
00:00:00