bash - lenguaje - shell script linux
Fecha de formato YYYY-MM-DD en script de shell (10)
Cada vez que tengo una tarea como esta termino volviendo a
$ man strftime
Para recordarme todas las posibilidades.
Intenté usar $(date)
en mi script de shell bash, sin embargo quiero la fecha en formato AAAA-MM-DD. ¿Cómo consigo esto?
Con Bash reciente (versión ≥ 4.2), puede usar el printf
integrado con el modificador de 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
En Bash:
obtener año-mes-día a partir de la date
DATE=`date +%Y-%m-%d`
obtener año-mes-día hora: minuto: segundo a partir de la date
DATE=`date ''+%Y-%m-%d %H:%M:%S''`
Otros formatos de fecha disponibles se pueden ver desde las páginas de manual de fecha :
man date
Está buscando el formato de fecha estándar ISO 8601 , así que si tiene la fecha de GNU (o cualquier comando de fecha más moderno que 1988), simplemente haga lo siguiente: $(date -I)
Prueba: $(date +%F)
Puedes hacer algo como esto:
$ date +''%Y-%m-%d''
Si desea el año en un formato de dos números, como 17 en lugar de 2017, haga lo siguiente:
DATE=`date +%d-%m-%y`
#!/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
Aquí x es la fecha de muestra utilizada y luego el ejemplo muestra tanto el formato de los datos como la obtención de fechas 10 minutos más que la fecha actual.
$(date +%F_%H-%M-%S)
se puede utilizar para eliminar dos puntos (:) entre
salida
2018-06-20_09-55-58
date -d ''1 hour ago'' ''+%Y-%m-%d''
La salida sería 2015-06-14
.