$(date)
bashシェルスクリプトで使用してみましたが、日付のYYYY-MM-DD
形式が必要です。
どうすればこれを入手できますか?
14 に答える
date
bash(> = 4.2)では、外部(通常はGNUの日付)ではなく、printfの組み込みの日付フォーマッター(bashの一部)を使用することをお勧めします。
そのような:
# put current date as yyyy-mm-dd in $date
# -1 -> explicit current date, bash >=4.3 defaults to current time if not provided
# -2 -> start time for shell
printf -v date '%(%Y-%m-%d)T\n' -1
# put current date as yyyy-mm-dd HH:MM:SS in $date
printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1
# to print directly remove -v flag, as such:
printf '%(%Y-%m-%d)T\n' -1
# -> current date printed to terminal
bash(<4.2):
# put current date as yyyy-mm-dd in $date
date=$(date '+%Y-%m-%d')
# put current date as yyyy-mm-dd HH:MM:SS in $date
date=$(date '+%Y-%m-%d %H:%M:%S')
# print current date directly
echo $(date '+%Y-%m-%d')
その他の利用可能な日付形式は、日付のマニュアルページから表示できます(外部の非bash固有のコマンドの場合)。
man date
試す:$(date +%F)
%F
オプションはのエイリアスです%Y-%m-%d
あなたはこのようなことをすることができます:
$ date +'%Y-%m-%d'
ISO 8601標準の日付形式を探しているので、GNU日付(または1988よりも新しい日付コマンド)を使用している場合は、次のようにしてください。$(date -I)
$(date +%F)
出力
2018-06-20
または、時間も必要な場合:
$(date +%F_%H-%M-%S)
間にあるコロン(:)を削除するために使用できます
出力
2018-06-20_09-55-58
date -d '1 hour ago' '+%Y-%m-%d'
出力はになります2015-06-14
。
最近のBash(バージョン≥4.2)では、組み込みprintf
のフォーマット修飾子を使用でき%(strftime_format)T
ます。
$ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time")
2017-11-10
$ printf '%(%F)T\n' -1 # Synonym of the above
2017-11-10
$ printf -v date '%(%F)T' -1 # Capture as var $date
printf
date
はBashビルトインでdate
あり、外部コマンドであるため、よりもはるかに高速です。
同様に、サブシェルをフォークする必要がないため、printf -v date ...
より高速です。date=$(printf ...)
私は次の定式化を使用します:
TODAY=`date -I`
echo $TODAY
のマニュアルページを確認してくださいdate
。他にも便利なオプションがいくつかあります。
man date
2017ではなく17などの2つの数値形式で年が必要な場合は、次のようにします。
DATE=`date +%d-%m-%y`
私がこのようなタスクを持っているときはいつでも、私はにフォールバックすることになります
$ man strftime
時間フォーマットオプションのすべての可能性を思い出してください。
私は時間と時間で$(date +"%Y-%m-%d")
またはを使用します。$(date +"%Y-%m-%d %T")
次のコマンドを使用してみてください:
date | cut -d " " -f2-4 | tr " " "-"
出力は次のようになります。21-Feb-2021
#!/bin/bash -e
x='2018-01-18 10:00:00'
a=$(date -d "$x")
b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S")
c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S")
#date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S"
echo Entered Date is $x
echo Second Date is $b
echo Third Date is $c
ここで、xは使用されたサンプルの日付であり、例では、データのフォーマットと、現在の日付より10分長い日付の取得の両方が表示されます。
日付を環境変数として設定でき、後で使用できます
setenv DATE `date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
また
DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"