Afficher la date et l'heure actuelles sans ponctuation

118

Par exemple, je souhaite afficher la date et l'heure actuelles au format suivant:

yyyymmddhhmmss 

Comment je fais ça? Il semble que la plupart format de date est livré avec -, /, :, etc.

retourne 0
la source

Réponses:

170

Voici:

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

Comme man dateindiqué près du haut, vous pouvez utiliser la datecommande comme ceci:

date [OPTION]... [+FORMAT]

Autrement dit, vous pouvez lui donner un paramètre de format, en commençant par un +. Vous pouvez probablement deviner la signification des symboles de mise en forme que j'ai utilisés:

  • %Y c'est pour l'année
  • %m c'est pour un mois
  • %d c'est pour la journée
  • ... etc

Vous pouvez trouver ceci, ainsi que d'autres symboles de mise en forme dans man date.

Janos
la source
36

Un exemple simple de script shell

#!/bin/bash

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

Sans format de ponctuation: - +% Y% m% d% H% M% S
Avec ponctuation: - +% Y-% m-% d% H:% M:% S

Buru
la source
2
"`date +%Y-%m-%d %H:%M:%S`"me donne undate: illegal time format
Sinux
6

Si vous utilisez Bash, vous pouvez également utiliser l'une des commandes suivantes:

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

Vous pouvez utiliser l'option -v varnamepour stocker le résultat au $varnamelieu de l'imprimer sur stdout:

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

Alors que la commande date sera toujours exécutée dans un sous-shell (c'est-à-dire dans un processus séparé), printf est une commande intégrée et sera donc plus rapide.

afaller
la source
Pour tous ceux qui recherchent une documentation supplémentaire sur les %options que vous pouvez transmettre, cela semble utiliser la datecommande. Alors, man datevous donnera les options disponibles.
electrovir
4

Sans ponctuation (comme @Burusothman l'a mentionné):

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

O / P:

20170115072120

Avec ponctuation :

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

O / P:

2017-01-15 07:25:33
Ani Menon
la source
0

Façon intéressante / amusante de le faire en utilisant l' expansion des paramètres (nécessite bash 4.4ou plus récent):

${parameter@operator} - P operator

L'expansion est une chaîne qui résulte de l'expansion de la valeur du paramètre comme s'il s'agissait d'une chaîne d'invite.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
PesaThe
la source