我写一个脚本返回基于用户输入格式化的日期,它可以是:转换4位数字为日期时间(年+与最小值软垫)
- 十一分之二千零一十六
- 2016年11月10日
- 2016年11月10日24
基本上我不得不垫这些输入以最小可能的值。 (2016年回报2016/01/01 00:00:00)。
我试着date -d "2016"
这样做,但这种返回时间下午八时16分今天的日期
非常感谢!
我写一个脚本返回基于用户输入格式化的日期,它可以是:转换4位数字为日期时间(年+与最小值软垫)
基本上我不得不垫这些输入以最小可能的值。 (2016年回报2016/01/01 00:00:00)。
我试着date -d "2016"
这样做,但这种返回时间下午八时16分今天的日期
非常感谢!
下面是一个脚本,应该基本上做你想做的事:
#!/bin/bash
echo INPUT:$1
[[ "$1" == "" ]] && YEAR=2016
[[ "$1" =~ ^[0-9]{4}$ ]] && YEAR="$1"
[[ $YEAR == "" ]] && YEAR=`echo "$1" | grep -Po ".*(?=/[0-9]{2}/)"`
MONTH=`echo "$1" | grep -Po "(?<=[0-9]{4}/).*(?=/[0-9]{2})"`
DAY=`echo "$1" | grep -Po "(?<=/[0-9]{2}/).*(?=\)"`
HR=`echo "$1" | grep -Po "(?<=[0-9]{2}\).*"`
MIN="00"
SEC="00"
[[ "$MONTH" == "" ]] && MONTH="01"
[[ "$DAY" == "" ]] && DAY="01"
[[ "$HR" == "" ]] && HR="00"
echo $YEAR/$MONTH/$DAY $HR:$MIN:$SEC
请注意,这是一个基本的骨架,你将不得不添加自己的边界情况和条件。
您可以使用date命令得到你的输出像下面
D1 = date +%Y
#Output是2016 D2 = date +%Y/%m
#Output是十一分之二千〇十六 D3 = date +%Y/%m/%d
#Output是2016年11月10日 D4 = date +%Y/%m/%d\t%H
#Output是2016 - > \ T-标签中指定,如果你想要的全部时间,你可以用 “%X或%T”,而不是 “%H”
回声$ D1 回声$ D2 回声$ d3 echo $ d4
对于用户输入日期,喜欢从已使用的输入,并将其保存在一个变量中,并获取您的4倍通过使用cut或sed命令输出 – Barcode
请将您希望的输出样本输入添加到您的问题中。 – Cyrus
(2016年回报2016/01/01 00:00:00)....它在那里:) – user3336544