web-dev-qa-db-fra.com

Date de format AAAA-MM-JJ en script shell

J'ai essayé d'utiliser $(date) dans mon script bash shell, mais je souhaite une date au format AAAA-MM-JJ. Comment puis-je l'obtenir?

896
Kapsh

Dans Bash: 

obtenir année-mois-jour de date

DATE=`date +%Y-%m-%d`

obtenir année-mois-jour heure: minute: seconde de date

DATE=`date '+%Y-%m-%d %H:%M:%S'`

Les autres formats de date disponibles peuvent être visualisés à partir de pages de manuel de date } _:

man date
1541
Philip Fourie

Essayez: $(date +%F)

283
kwatford

Vous pouvez faire quelque chose comme ça:

$ date +'%Y-%m-%d'
68
lutz

Vous recherchez ISO 8601 format de date standard, donc si vous avez GNU date (ou toute commande de date plus moderne que 1988), faites simplement ceci: $(date -I)

34
Medievalist
date -d '1 hour ago' '+%Y-%m-%d'

La sortie serait 2015-06-14.

17
xu2mao
$(date +%F_%H-%M-%S)

peut être utilisé pour enlever les deux points (:) entre

sortie

2018-06-20_09-55-58
10
ahmettolga

Avec Bash récent (version ≥ 4.2), vous pouvez utiliser la variable printf intégrée avec le modificateur de format %(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
6
wjandrea

si vous voulez l'année dans un format à deux chiffres tel que 17 plutôt que 2017, procédez comme suit:

DATE=`date +%d-%m-%y`
5
Crt
#!/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

Ici, x est la date d’échantillon utilisée et cet exemple affiche à la fois le formatage des données et l’obtention des dates 10 minutes de plus que la date actuelle.

4
ankitbaldua

Chaque fois que j'ai une tâche comme celle-ci, je finis par tomber dans 

$ man strftime

me rappeler toutes les possibilités. 

4
arp

J'utilise la formulation suivante:

TODAY=`date -I`
echo $TODAY

Consultez la page de manuel de date, il existe un certain nombre d’autres options utiles:

man date
2
Luís de Sousa

Vous pouvez définir la date comme variable d’environnement et plus tard, vous pourrez l’utiliser

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

ou 

DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
0
Farid Haq

J'utilise $ (date + "% Y-% m-% d") ou $ (date + "% Y-% m-% d% T") avec l'heure et les heures.

0
Miguel