Muestra la fecha y hora actuales sin puntuación

118

Por ejemplo, quiero mostrar la fecha y hora actuales con el siguiente formato:

yyyymmddhhmmss 

¿Cómo puedo hacer eso? Parece que la mayoría formato de fecha viene con -, /, :, etc.

volver 0
fuente

Respuestas:

170

Aqui tienes:

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

Como man datedice cerca de la parte superior, puede usar el datecomando de esta manera:

date [OPTION]... [+FORMAT]

Es decir, puede darle un parámetro de formato, comenzando con un +. Probablemente puedas adivinar el significado de los símbolos de formato que utilicé:

  • %Y es por año
  • %m es por mes
  • %d es por dia
  • ... y así

Puede encontrar este y otros símbolos de formato en man date.

Janos
fuente
36

Un ejemplo sencillo en un script de shell

#!/bin/bash

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

Sin formato de puntuación: - +% Y% m% d% H% M% S
Con puntuación: - +% Y-% m-% d% H:% M:% S

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

Si está usando Bash, también puede usar uno de los siguientes comandos:

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

Puede usar la opción -v varnamepara almacenar el resultado en $varnamelugar de imprimirlo en la salida estándar:

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

Si bien el comando de fecha siempre se ejecutará en una subcapa (es decir, en un proceso separado), printf es un comando incorporado y, por lo tanto, será más rápido.

un infiel
fuente
Para cualquiera que busque más documentación sobre las %opciones que puede pasar, esto parece estar usando el datecomando. Entonces, man datele dará las opciones disponibles.
electrovir
4

Sin puntuación (como ha mencionado @Burusothman):

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

O / P:

20170115072120

Con puntuación :

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

O / P:

2017-01-15 07:25:33
Ani Menon
fuente
0

Forma interesante / divertida de hacer esto usando la expansión de parámetros (requiere bash 4.4o más reciente):

${parameter@operator} - P operator

La expansión es una cadena que es el resultado de expandir el valor del parámetro como si fuera una cadena de solicitud.

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