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.

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.


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


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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.