我正在尝试将月份编号转换为名称,但它给出的输出是当前月份,而不是变量中给出的日期。
KornShell (ksh) 代码:
datep= 2013-10-22
echo $datep |printf "%(%B)T\n"
printf
不从标准输入读取,因此它假设今天的日期作为%T
格式的默认参数;您需要提供日期作为参数。
printf "%(%B)T\n" "$datep"
像这样做:
$ 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