Visualizza la data e l'ora correnti senza punteggiatura


118

Ad esempio, desidero visualizzare la data e l'ora correnti nel seguente formato:

yyyymmddhhmmss 

Come lo faccio? Sembra che la maggior parte formato della data è dotato -, /, :, etc.

Risposte:


170

Ecco qui:

date +%Y%m%d%H%M%S

Come man datedice in alto, puoi usare il datecomando in questo modo:

date [OPTION]... [+FORMAT]

Cioè, puoi dargli un parametro di formato, che inizia con un +. Probabilmente puoi indovinare il significato dei simboli di formattazione che ho usato:

  • %Y è per l'anno
  • %m è per il mese
  • %d è per il giorno
  • ... e così via

Puoi trovare questo e altri simboli di formattazione in man date.


36

Un semplice esempio in script di shell

#!/bin/bash

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

Senza formato di punteggiatura: - +% Y% m% d% H% M% S
Con punteggiatura: - +% Y-% m-% d% H:% M:% S


2
"`date +%Y-%m-%d %H:%M:%S`"mi dà undate: illegal time format
Sinux

6

Se stai usando Bash puoi anche usare uno dei seguenti comandi:

printf '%(%Y%m%d%H%M%S)T'       # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1    # same as above
printf '%(%Y%m%d%H%M%S)T' -2    # prints the time the shell was invoked

Puoi usare l'opzione -v varnameper memorizzare il risultato $varnameinvece di stamparlo su stdout:

printf -v varname '%(%Y%m%d%H%M%S)T'

Sebbene il comando date sarà sempre eseguito in una subshell (cioè in un processo separato) printf è un comando incorporato e sarà quindi più veloce.


Per chiunque cerchi ulteriore documentazione su quali %opzioni è possibile passare, questo sembra utilizzare il datecomando. Quindi, man dateti darà le opzioni disponibili.
electrovir

4

Senza punteggiatura (come ha detto @Burusothman):

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

OPERAZIONE:

20170115072120

Con punteggiatura :

current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;

OPERAZIONE:

2017-01-15 07:25:33

0

Modo interessante / divertente per farlo utilizzando l' espansione dei parametri (richiede bash 4.4o più recente):

${parameter@operator} - P operator

L'espansione è una stringa che è il risultato dell'espansione del valore del parametro come se fosse una stringa di prompt.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.