0

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

KornShell (ksh) 代码:

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

2 回答 2

1

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

printf "%(%B)T\n" "$datep"
于 2013-11-13T13:06:35.917 回答
0

像这样做:

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

根据man date,

-d,--日期=字符串

显示由 STRING 描述的时间,而不是“现在”

所以我们得到:

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

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

%B

语言环境的完整月份名称(例如,一月)

因此,只需在字符串末尾使用格式即可。

其他示例:

$ 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
于 2013-11-13T12:29:18.463 回答