2016-11-17 32 views
-1

は私がすることができ、ユーザの入力に基づいてフォーマットされた日付、返すようにスクリプトを書いています(最小値とパディング年+):のDateTimeに4桁の数字を変換し

  • 11分の2016
  • 2016年11月10日
  • 2016年11月10日24

は、基本的に私はパッドに可能な最小値を有するこれらの入力を有します。 (2016年は2016/01/01 00:00:00を返します)。

私はdate -d "2016"でそれをやってみましたが、これは今日の日付に

感謝を時間20: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

あなたは

以下、D1 = date +%Y #Output 2016 あるD2 = date +%Y/%m #Outputのようなあなたの出力を取得するには、dateコマンドを使用することができます11分の2016 D3 = date +%Y/%m/%d #Outputは、2016年11月10日 D4ですあなたは全体の時間をしたい場合は、代わりに "%のH"

エコー$ d1の エコー$ d2を エコー$の "%Xまたは%T" を使用することができ、指定された> \ T-タブ - = date +%Y/%m/%d\t%H #Outputは2016ですd3 echo $ d4

+0

ユーザーの入力日は、使用された入力を変数として保存し、 cutコマンドまたはsedコマンドを使用して出力する – Barcode

関連する問題