zona script programacion horaria hora formato fechas fecha ejemplos consola cambiar anterior linux bash datetime

script - Obtén la hora actual en segundos desde la Época en Linux, Bash



programacion shell linux ejemplos (6)

Necesito algo simple como la date , pero en segundos desde 1970 en lugar de la fecha actual, horas, minutos y segundos.

date no parece ofrecer esa opción. hay una manera fácil?


Con la mayoría de las implementaciones de Awk:

awk ''BEGIN {srand(); print srand()}''


Esta es una extensión de lo que @pellucide ha hecho, pero para Mac:

Para determinar el número de segundos desde la época (1 de enero de 1970) para una fecha determinada (por ejemplo, 21 de octubre de 1973)

$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s" 120034800

Tenga en cuenta que, para completar, he agregado la parte de tiempo al formato. El motivo es que la date tomará la parte de la fecha que le dio y agregará la hora actual al valor proporcionado. Por ejemplo, si ejecuta el comando anterior a las 4:19 PM, sin la parte ''00: 00: 00 '', se agregará la hora automáticamente. De tal manera que "21 de octubre de 1973" se analizará como "21 de octubre de 1973 16:19:00". Eso puede no ser lo que quieres.

Para convertir su marca de tiempo de nuevo a una fecha:

$ date -j -r 120034800 Sun Oct 21 00:00:00 PDT 1973

Página de manual de Apple para la implementación de la fecha: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html


Esto debería funcionar:

date +%s


Hasta el momento, todas las respuestas utilizan la date programa externo.

Desde Bash 4.2, printf tiene un nuevo modificador %(dateformat)T que, cuando se usa con el argumento -1 genera la fecha actual con el formato de fecha, manejado por strftime(3) ( man 3 strftime para información sobre los formatos).

Entonces, para una solución pura Bash:

printf ''%(%s)T/n'' -1

o si necesita almacenar el resultado en una variable var :

printf -v var ''%(%s)T'' -1

No hay programas externos ni subshells!

Desde Bash 4.3, incluso es posible no especificar el -1 :

printf -v var ''%(%s)T''

(pero podría ser más sabio dar siempre el argumento -1 no obstante).

Si usa -2 como argumento en lugar de -1 , Bash usará la hora en que se inició el shell en lugar de la fecha actual (pero ¿por qué querría esto?).


Sólo para añadir.

Obtenga los segundos desde la época (1 de enero de 1970) para cualquier fecha dada (por ejemplo, 21 de octubre de 1973).

date -d "Oct 21 1973" +%s


Convertir el número de segundos de vuelta a la fecha

date --date @120024000


La date comando es bastante versátil. Otra cosa interesante que puede hacer con la fecha (copiado sin reparos de la date --help ). Muestra la hora local para las 9AM del próximo viernes en la costa oeste de los Estados Unidos.

date --date=''TZ="America/Los_Angeles" 09:00 next Fri''

Mejor aún, tómese un tiempo para leer la página de manual http://man7.org/linux/man-pages/man1/date.1.html


usa este script bash (mi ~/bin/epoch ):

#!/bin/bash # get seconds since epoch test "x$1" == x && date +%s && exit 0 # or convert epoch seconds to date format (see "man date" for options) EPOCH="$1" shift date -d @"$EPOCH" "$@"