如果我在linux终端上键入"date“,它将显示
2017年美国东部时间11月5日11:29
我的问题是,有什么方法可以用以下两种形式来展示它吗?只使用“日期”命令或shell脚本?
4月17日至5日
17-4-5婚
发布于 2017-04-05 23:06:00
您可以使用date命令和tr完成所需的任务。我创建了一个脚本,它接受一个parm ($1),并将它(假设是日期)转换为您想要的格式:
tmp()
{
d8out1="$(date -d $1 +%y-%B-%-d) $(date -d $1 +%a | tr [:upper:] [:lower:])"
echo $d8out1
d8out2=$(date -d $1 +"%y-%-m-%-d %^a")
echo $d8out2
}日期格式使用下列选项:
%y -- Two digit year (use %Y (uppercase) for four digits)
%B -- Full month name (e.g., April)
%-m -- Month number -- the hyphen ("-") says do not pad the field (4 instead of 04)
%-d -- Day of month -- again, the hyphen suppresses padding
%a -- abbreviated weekday name (e.g. Wed) -- tr is then used to shift the case.
%^a -- abbreviated weekday name -- the caret ("^") says to upshift it请注意,如果您不关心日期名称的情况,那么第一个版本可以在一个简单的语句中完成,与第二个语句相同(当然,没有插入符号来向上移动日期)。
下面是几个示例运行:
> tmp 04/05/2017
17-April-5 wed
17-4-5 WED
> tmp 12/31/2017
17-December-31 sun
17-12-31 SUN
> tmp 11/30/1965
65-November-30 tue
65-11-30 TUE希望这能有所帮助!
发布于 2017-04-05 16:19:08
$ date +"%g-%B-$(echo `date +%e`) $(date +%a|tr [:upper:] [:lower:])"
17-April-5 wed
$ date +"%g-$(date +%m|sed 's/^0//')-$(echo `date +%e`) $(date +%a|tr [:lower:] [:upper:])"
17-4-5 WEDhttps://stackoverflow.com/questions/43236092
复制相似问题