Convertir una cadena de fecha a un timestamp con JavaScript
En programación es común manipular fechas y horas. En ocasiones, es necesario representar una fecha o hora en formato de timestamp Unix. Un timestamp es una cadena de números que representa una fecha y hora específica. Este formato es ampliamente utilizado en programación para almacenar y comparar fechas.
En este artículo, aprenderás cómo convertir una cadena de fecha en JavaScript a un formato de timestamp Unix utilizando funciones nativas de JavaScript.
Convertir una fecha en JavaScript a un timestamp Unix
En JavaScript, puedes utilizar la función `Date.parse()` para convertir una cadena de fecha en formato ISO 8601 a un timestamp Unix. Esta función devuelve la cantidad de milisegundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC.
```
const fechaString = '2022-12-31T12:00:00Z';
const fechaTimestamp = Date.parse(fechaString)/1000;
console.log(fechaTimestamp); // 1672512000
```
En el código anterior, la función `Date.parse()` recibe la cadena de fecha `fechaString` y la convierte en un timestamp Unix en segundos. El resultado se almacena en la variable `fechaTimestamp`.
Ten en cuenta que la división por 1000 es necesaria para convertir el timestamp Unix en milisegundos a segundos.
Convertir una fecha con otro formato a un timestamp Unix
Si tienes una fecha en un formato distinto al ISO 8601, primero debes convertirla a este último formato antes de poder convertirla a un timestamp Unix.
Para ello, puedes utilizar la función `new Date()` de JavaScript y pasarle la cadena de fecha en el formato adecuado. Luego, puedes utilizar la función `getTime()` para obtener el timestamp Unix correspondiente.
```
const fechaString = '31/12/2022 12:00:00';
const fechaISO = fechaString.split('/').reverse().join('-').concat('T00:00:00');
const fechaTimestamp = new Date(fechaISO).getTime()/1000;
console.log(fechaTimestamp); // 1672512000
```
En el código anterior, la cadena de fecha `fechaString` está en formato DD/MM/AAAA HH:MM:SS. Primero, se utiliza el método `split()` para separar la cadena en tres partes: día, mes y año. Luego, se invierten las partes con el método `reverse()` y se concatenan con guiones. Después se agrega la cadena `T00:00:00` que indica las horas, minutos y segundos en formato UTC.
Finalmente, se utiliza la función `new Date()` para convertir la cadena de fecha en formato ISO 8601 y se extrae el timestamp Unix con la función `getTime()`.
Ejemplos de uso
- Timestamp actual:
```js
const now = Date.now()/1000;
console.log(now);
```
- Timestamp de una fecha específica:
```js
const fechaString = '2022-12-31T12:00:00Z';
const fechaTimestamp = Date.parse(fechaString)/1000;
console.log(fechaTimestamp);
```
- Timestamp de una fecha con otro formato:
```js
const fechaString = '31/12/2022 12:00:00';
const fechaISO = fechaString.split('/').reverse().join('-').concat('T00:00:00');
const fechaTimestamp = new Date(fechaISO).getTime()/1000;
console.log(fechaTimestamp);
```
Conclusión
En JavaScript, es fácil convertir una cadena de fecha a formato de timestamp Unix. Con la función `Date.parse()` y `getTime()` puedes obtener el timestamp para cualquier fecha en formato ISO 8601.
Preguntas frecuentes
¿Qué es un timestamp Unix?
Un timestamp Unix es una cadena de números que representa una fecha y hora específica. El formato de timestamp Unix se define como la cantidad de segundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC.
¿Cómo se representa una fecha en formato ISO 8601?
Una fecha en formato ISO 8601 se representa como una cadena en formato AAAA-MM-DDTHH:MM:SS.mmmZ. Donde AAAA representa el año, MM el mes, DD el día, HH las horas, MM los minutos, SS los segundos y mmm los milisegundos. La letra T separa la fecha de la hora y la letra Z indica la zona horaria en formato UTC.
¿Cómo convierto un timestamp Unix a una fecha legible?
Para convertir un timestamp Unix a una fecha legible, puedes utilizar la función `new Date()` y pasarle el timestamp en milisegundos. Luego, puedes utilizar los métodos `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()` y `getSeconds()` para obtener los valores correspondientes.
```js
const timestamp = 1672512000;
const currentDate = new Date(timestamp * 1000);
const date = `${currentDate.getFullYear()}/${currentDate.getMonth()+1}/${currentDate.getDate()}`;
const time = `${currentDate.getHours()}:${currentDate.getMinutes()}:${currentDate.getSeconds()}`;
console.log(`${date} ${time}`);
```
¿Puedo utilizar timestamp Unix en otras plataformas?
Sí, el formato de timestamp Unix es ampliamente utilizado por muchas plataformas y lenguajes de programación. Por ejemplo, Unix, Linux y macOS utilizan timestamps Unix para almacenar y manipular fechas y horas.
Deja una respuesta