Ahora que cada vez mas los sites no solo ofrecen servicios al usuario que navega, sino que interactúan entre ellos compartiendo información y sirviendo funcionalidades, los programadores tenemos que esforzarnos mas por cumplir estándares y compenetrar distintas tecnologías.
Es el caso de, por ejemplo, tener que compartir información de fechas entre un proyecto que trabaja en .Net y otro que lo hace en PHP con formato Unix timestamp. Si buscamos entre las librerías de .Net no encontraremos (yo al menos no lo hice) ninguna función u objeto compatible con dicho formato, por lo que si queremos generar una fecha en Unix timestamp vamos a tener que buscar información y generarlo manualmente.
¿En que consiste el formato Unix timestamp? Es un integer de 32 bits desarrollado para el SO Unix. Unix fue desarrollado entre la década de los 60 y los 70, por lo que el inicio del contador, el valor 0 del integer es el 1 de enero de 1970 a las 0:00 GMT (lo que significa que en España eran 2 horas mas tarde). A partir de ese momento, empezaron a contar los segundos, y cada segundo era un numero nuevo, sumándole uno al anterior.
Es por esto que, para calcular la hora en Unix timestamp, debemos calcular cuantos segundos han pasado desde el 1 de enero de 1970, en .Net podemos hacerlo de la siguiente manera:
Dim Hora As String = Now.Subtract(New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds.ToString.Replace(”,”, “.”).Split(”.”c)(0)
‘— En España era 2 horas mas tarde, por ello quizás necesites:
Dim HoraEspanyola As String = Now.Subtract(New DateTime(1970, 1, 1, 2, 0, 0)).TotalSeconds.ToString.Replace(”,”, “.”).Split(”.”c)(0)
// Si queremos hacerlo en PHP basta con:
var $horaPHP = time();
Lo mas curioso de todo esto, es que al ser un integer de 32 bits el tiempo en Unix es limitado, tanto, que el 19 de enero del 2038 los relojes internos de Unix no podrán avanzar mas y el sistema habrá muerto. Al contrario que el fin del mundo del año 2000 anunciado en los ordenadores, en este caso será real, supongo que de aquí a entonces modificarán el kernel de Unix o desarrollarán otro nuevo.

