2016-11-17 103 views
-1

我写一个脚本返回基于用户输入格式化的日期,它可以是:转换4位数字为日期时间(年+与最小值软垫)

  • 十一分之二千零一十六
  • 2016年11月10日
  • 2016年11月10日24

基本上我不得不垫这些输入以最小可能的值。 (2016年回报2016/01/01 00:00:00)。

我试着date -d "2016"这样做,但这种返回时间下午八时16分今天的日期

非常感谢!

+0

请将您希望的输出样本输入添加到您的问题中。 – Cyrus

+1

(2016年回报2016/01/01 00:00:00)....它在那里:) – user3336544

回答

0

下面是一个脚本,应该基本上做你想做的事:

#!/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 

请注意,这是一个基本的骨架,你将不得不添加自己的边界情况和条件。

0

您可以使用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

+0

对于用户输入日期,喜欢从已使用的输入,并将其保存在一个变量中,并获取您的4倍通过使用cut或sed命令输出 – Barcode

相关问题