YYYY-MM-DD format tanggal di shell script

Saya mencoba menggunakan $(date) dalam bash shell script, namun saya ingin upload di YYYY-MM-DD format. Bagaimana saya bisa mendapatkan ini?

Larutan

Di bash (>=4.2) adalah lebih baik untuk menggunakan printf's built-in tanggal formatter (bagian dari bash) daripada eksternal tanggal (biasanya GRATIS tanggal).

Seperti:

# 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

Di 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')

Lainnya format tanggal yang tersedia dapat dilihat dari tanggal halaman man (untuk eksternal non-bash perintah tertentu):

man date
Komentar (15)

Coba: $(date +%F)

Komentar (1)

Anda dapat melakukan sesuatu seperti ini:

$ date +'%Y-%m-%d'
Komentar (0)

Anda'kembali mencari ISO 8601 standar format tanggal, jadi jika anda memiliki GNU tanggal (atau setiap tanggal perintah yang lebih modern dari tahun 1988) hanya melakukan: $(tanggal-I)

Komentar (3)
date -d '1 hour ago' '+%Y-%m-%d'

Output akan menjadi 2015-06-14.

Komentar (2)
$(date +%F_%H-%M-%S)

dapat digunakan untuk menghilangkan tanda titik dua (:) di antara

output

2018-06-20_09-55-58
Komentar (0)

Dengan baru-baru Bash (versi ≥ 4.2), anda dapat menggunakan built-in printf dengan format pengubah %(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 adalah jauh lebih cepat dari tanggal karena itu's Bash builtin sementara tanggal adalah perintah eksternal.

Dan juga, printf -v tanggal ... lebih cepat dari tanggal=$(printf ...) sejak itu doesn't membutuhkan forking subkulit.

Komentar (5)

Setiap kali saya memiliki tugas seperti ini saya akhirnya jatuh kembali ke

$ man strftime

untuk mengingatkan diri sendiri dari semua kemungkinan.

Komentar (0)
#!/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

Berikut ini x adalah sampel saat digunakan & kemudian menampilkan contoh baik format data serta mendapatkan tanggal 10 menit lebih kemudian tanggal saat ini.

Komentar (0)

jika anda ingin tahun ini dalam dua format angka seperti 17 daripada 2017, lakukan hal berikut:

DATE=`date +%d-%m-%y`
Komentar (0)

Saya menggunakan formulasi berikut: HARI ini=`date-aku` echo $HARI ini Checkout halaman man untuk date, ada beberapa pilihan lain yang berguna: pria tanggal

Komentar (0)

Saya menggunakan $(date +"%Y-%m-%d") atau $(date +"%Y-%m-%d %T") dengan waktu dan jam.

Komentar (0)

Anda dapat mengatur tanggal sebagai variabel lingkungan dan kemudian anda dapat menggunakannya

setenv DATE `date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"

atau

DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
Komentar (0)