1. Convertir fecha a época:
Para convertir una fecha y hora en tiempo de época en segundos, puedes usar el comando `date` con la opción ` +%s`.
Por ejemplo, para convertir la fecha y hora "1 de enero de 1970 00:00:00 UTC" a la hora de época, utilizaría el siguiente comando:
```
$ fecha --utc -d '1970-01-01 00:00:00 UTC' +%s
```
Este comando generaría la siguiente época:
```
0
```
2. Convertir época a fecha:
Para convertir una época en una fecha y hora, puede usar el comando `fecha` con la opción ` -d @`.
Por ejemplo, para convertir la época "0" en una fecha y hora, usaría el siguiente comando:
```
$ fecha -d @0
```
Este comando generaría la siguiente fecha y hora:
```
Jueves 1 de enero 00:00:00 UTC 1970
```
3. Agregar/Restar segundos a/desde la época del tiempo:
Para sumar o restar segundos desde la época, puede usar el comando `date` con las opciones ` -d @` y ` +%s`.
Por ejemplo, para agregar 60 segundos al tiempo de época "0", usaría el siguiente comando:
```
$ fecha -d @0 +%s
```
Este comando generaría la siguiente época:
```
60
```
Para restar 60 segundos del tiempo de época "60", usaría el siguiente comando:
```
$ fecha --date='@60 segundos' -u +%s
```
5. Convierta segundos al formato de fecha:
```
$ fecha -d @ 1585233869
```
Para restar 1 día (86400 segundos) del tiempo de época:
```
$ fecha -d "ahora - 1 día" +%s
```
Aquí hay 13 mejores ejemplos de conversión o cambio de época usando la utilidad de fecha en Linux o Unix:
1. Convierta la fecha a la época, considerando la zona horaria:
Por ejemplo, para convertir la fecha y hora "1 de enero de 1970 12:00:00 p.m. EST" a tiempo de época en segundos, usaría el siguiente comando:
```
$ fecha --fecha '1970-01-01 12:00:00 EST' +%s
```
Aquí, "fecha" se usa con la opción "--date" para convertir una cadena que representa la fecha y la hora en la época. ` +%s` formatea la salida como el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC.
Este comando generaría la siguiente época:
```
3600
```
2. Convertir la época a la fecha, considerando UTC:
Por ejemplo, para convertir la época "1585233869" a una fecha y hora en formato UTC, usaría el siguiente comando:
```
$ fecha -ud @1585233869
```
En este ejemplo, la opción `-ud` se usa con el símbolo `@` para interpretar la época de `1585233869` como una marca de tiempo Unix en UTC.
Este comando generaría la siguiente fecha y hora:
```
domingo 29 de marzo 18:24:29 UTC 2020
```
3. Convierta la hora de la época a la zona horaria local:
Para convertir la hora de época "1585233869" a una fecha y hora en una zona horaria específica, use `date -d @1585233869 -T "timezone"`, reemplazando "timezone" con la zona horaria que desee.
```
$ fecha -d @1585233869 -T "América/Nueva_York"
```
Esto mostraría:
```
domingo 29 de marzo 13:24:29 EDT 2020
```
4. Convertir fecha a época en milisegundos (milisegundos desde la época):
Para convertir una fecha como "1 de julio de 2020, 12:30 p.m." a milisegundos, use `fecha +%s%3N`, donde `+%s` son segundos desde la época y `%3N` agrega 3 dígitos para milisegundos .
```
$ fecha --fecha '1 de julio de 2020, 12:30 p.m.' +%s%3N
```
Esto genera milisegundos de época:
```
1593630600992
```
5. Convierta la época en milis a una fecha legible por humanos:
Para convertir epoch millis, como 1593630600000, en una cadena de fecha, use `date -d @epoch-millis +'%Y-%m-%d %H:%M:%S.%3N'`.
```
$ fecha -d @1593630600000 +'%Y-%m-%d %H:%M:%S.%3N'
```
Producción:
```
2020-07-01 12:30:00.000
```
6. Obtenga la fecha y hora actuales en formato legible por máquina:
`date +%s%3N` muestra milisegundos de época, lo que resulta útil al comparar dos fechas.
```
$ fecha +%s%3N
```
Producción:
```
1593633240539
```
7. Sumar o restar días de la época:
`date -d @epoch-segundos +days` ajusta el tiempo de época según el número de días especificado. Por ejemplo:
```
$ fecha -d @1593630600 +3días
```
Producción:
```
Jueves 4 de julio 12:30:00 EDT 2020
```
8. Reste fechas para calcular la diferencia:
Para calcular la diferencia entre dos fechas, encuentre los segundos de su época y reste. Por ejemplo:
```
$ hora_final=$(fecha +%s)
$ hora_inicio=$(fecha -d "2019-07-01" +%s)
$ diferencia_en_segundos=$((hora_final - hora_inicio ))
```
9. Suma o resta intervalos de tiempo:
Para sumar o restar intervalos específicos, como 5 horas y 30 minutos, de una época determinada, utilice:
```
$ fecha -d @1593630600 +5horas -30minutos
```
Producción:
```
Viernes 2 de julio 12:00:00 EDT 2020
```
10. Fecha de conteo hasta evento futuro:
Para determinar cuánto falta para una fecha específica en el futuro, convierta ambas fechas relevantes a segundos de época y calcule la diferencia. Por ejemplo:
```
$ hora_final=$(fecha -d "2021-12-25 00:00" +%s)
$ hora_inicio=$(fecha +%s)
$ segundos_hasta_Navidad=$((hora_final - hora_inicio ))
```
11. Cuenta las fechas desde el evento pasado:
De manera similar, contar el número de días transcurridos desde un evento como un cumpleaños implicaría restar los segundos de época de la fecha del evento de la fecha actual:
```
$ cumpleaños=$(fecha -d "1999-09-01" +%s)
$ hora_actual=$(fecha +%s)
$ días_desde_cumpleaños=$(( (hora_actual - cumpleaños)/(60*60*24) ))
```
12. Generar época de tiempo aleatoria:
Para crear una marca de tiempo aleatoria dentro de un rango de fechas específico, use el siguiente comando:
```
$ min_time=$(fecha -d "2019-07-01" +%s)
$ max_time=$(fecha -d "2020-07-31" +%s)
$ tiempo_aleatorio=$(shuf -i $tiempo_mínimo-$tiempo_máximo -n1)
$ fecha -d @$hora_aleatoria
```
13. Convierta períodos de tiempo legibles por humanos en segundos:
Para simplificar los cálculos de tiempo, convierta períodos de tiempo legibles por humanos a segundos usando la calculadora `expr`:
```
$ segundos_5_horas=$(expr 5 \* 60 \* 60)
$ fecha +%s -d "ahora - $segundos_5_horas segundos"
```
Esto genera la fecha/hora actual disminuida en 5 horas:
```
Viernes 9 de julio 15:02:20 EDT 2021
```
Recuerde, cuando se trata de cálculos relacionados con el tiempo, seleccionar la zona horaria adecuada es fundamental para garantizar resultados precisos.