risposta-alla-domanda-sullo-sviluppo-web-bd.com

Data del formato AAAA-MM-GG nello script Shell

Ho provato ad usare $(date) nel mio script di shell bash, tuttavia voglio la data nel formato AAAA-MM-GG. Come ottengo questo?

896
Kapsh

In Bash: 

get year-month-day da date

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

get year-month-day hour: minute: second from date

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

Altri formati di data disponibili possono essere visualizzati dal data man pages :

man date
1541
Philip Fourie

Prova: $(date +%F)

283
kwatford

Puoi fare qualcosa del genere:

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

Stai cercando ISO 8601 formato di data standard, quindi se hai GNU date (o qualsiasi comando di data più moderno del 1988) fai semplicemente: $(date -I)

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

L'output sarebbe 2015-06-14.

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

può essere usato per rimuovere i due punti (:) in mezzo

produzione

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

Con Bash recente (versione ≥ 4.2), puoi usare il printf incorporato con il modificatore di formato %(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

se si desidera l'anno in un formato a due numeri, ad esempio 17 anziché 2017, attenersi alla seguente procedura:

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

Qui x è la data del campione utilizzata e quindi l'esempio visualizza sia la formattazione dei dati sia le date di ricezione 10 minuti più della data corrente.

4
ankitbaldua

Ogni volta che ho un compito come questo finisco per ricadere a 

$ man strftime

per ricordarmi di tutte le possibilità. 

4
arp

Puoi impostare la data come variabile di ambiente e in seguito puoi usarla

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

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

Io uso $ (data + "% Y-% m-% d") o $ (data + "% Y-% m-% d% T") con ora e ore.

0
Miguel