Para muchos de vosotros es bien conocido que el momento que los sistemas operativos UNIX utilizan como momento cero desde el que cuentan el tiempo en segundos (la época UNIX, mala traducción de the UNIX epoch) es el 1 de enero de 1970. Pues bien, hoy se cumplen exactamente 20000 días exactos desde ese momento.
Ese momento me lo recordó @drang@fosstodon.org con una entrada en el que enlaza a otra entrada de @eddelbuettel@mastodon.social, que demostraba en R cómo calcular el número entero de días transcurridos desde el 1 de enero de 1970 a partir del número de segundos reportado por el reloj del sistema:
> Sys.setenv(TZ="UTC")
> difftime(Sys.Date(), as.Date("1970-01-01"))
Time difference of 20000 days
Drang proporcionaba el siguiente código en Bash (también válido en ZSH, o incluso sh; no válido en csh o tcsh):
$ echo $(( $(date +"%s")/86400 ))
20000
Yo prefiero hacerlo en Python, donde hay varias maneras de hacerlo:
> # Utilizando división entera sobre la época UNIX
> import datetime as dt
> dt.datetime.today().timestamp()//86400
20000.0
Pero también se puede hacer usando los códigos de formateo de fechas de la función date de UNIX (los mismos que utiliza el comando date):
> # Utilizando división entera sobre la época UNIX
> import datetime as dt
> int(dt.datetime.strftime(dt.datetime.today(), format="%s"))//86400
20000
Y una forma más de demostrar que hoy, 4 de octubre de 2024, es el día 20000 de la época UNIX:
> import datetime as dt
> dt.datetime(1970,1,1)+dt.timedelta(days=20000)
datetime.datetime(2024, 10, 4, 0, 0)
¡Feliz vigésimo milésimo día!
![(base) jsantandervela@HoMini2Pro ~ python Python 3.12.5 | packaged by conda-forge | (main, Aug 8 2024, 18:32:50) [Clang 16.0.6 ] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import datetime as dt >>> dt.datetime.today.timestamp(//86400 20000.0 >>>](https://santander-vela.net/wp-content/uploads/2024/10/UNIX-Epoch-20000-days.png)