Fechas en JavaScript
Tu compañero anota marzo como 3 porque en el calendario de pared es el tercer mes, y el programa le construye abril sin quejarse. Para cerrar esa discusión dejamos quieta una sola mañana: la sala de lectura abre el jueves 14 de marzo de 2024 a las 9:30. Si cada recarga pide «ahora», la mañana se mueve y el ejemplo se pierde.
No estás buscando en una lista
En el array la respuesta era una casilla, un −1, un sí o un no, o el propio sello. Una fecha no se encuentra así. La armas tú, y cada pregunta saca un dato distinto de esa misma mañana. Preguntar no adelanta el reloj.
La chuleta de este jueves, no un glosario
Mira qué número corresponde a cada pregunta en esta mañana, y al lado el trueque que más se ve en clase.
📊 Chuleta de este jueves
| Método | Qué estás preguntando | Número de esta mañana | El trueque de siempre |
|---|---|---|---|
getFullYear |
el año escrito entero | 2024 |
dejarlo en 24 |
getMonth |
dónde se sienta marzo dentro del objeto | 2 |
leerlo como 3 |
getDate |
qué día del mes es | 14 |
confundirlo con el jueves |
getDay |
qué puesto ocupa el jueves | 4 |
confundirlo con el 14 |
getHours |
la hora en un día de 0 a 23 | 9 |
buscar una marca de mañana |
getMinutes |
el minuto | 30 |
pedirle el 30 a la hora |
Enero es 0, febrero 1, marzo 2. Domingo es 0, lunes 1, martes 2, miércoles 3, jueves 4. El cero del array era la primera casilla. Estos ceros son el principio del año y de la semana.
Saca el año antes de pelearte con el mes
2024 sale entero del primer hueco. Esta lectura no lo parte en 24, y el día, la hora y el minuto se quedan para otras preguntas.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());
Aparece 2024 porque eso pusiste al principio. El 2 del mes no sale en esta línea, pero desde que construiste la mañana ya quiere decir marzo. 24 es un recorte que esta lectura no hace.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());
Tu compañero, en cuanto ve el 2, quiere sumar 1 «para que ya sea marzo». El 2 ya es marzo, porque enero ocupó el 0. El 1 que le falta al calendario de pared entra más adelante, cuando la página arme la frase. En esta llamada no se toca.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());
14 es el día dentro de marzo y 4 es el jueves, contando desde el domingo. Salen seguidos porque pediste las dos cosas, no porque sean la misma pregunta. Si cruzas los métodos, lees una fecha y crees que es el nombre del día, o al revés.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());
Primero 9, después 30. Las horas arrancan en 0 a medianoche y llegan hasta 23, así que ese 9 es la mañana y no necesita una etiqueta aparte. El 30 es el minuto. Quien se lo pide a la hora está mirando la aguja que no es.
let opened = new Date(2024, 2, 14, 9, 30);
let visit = new Date(2024, 2, 20, 15, 0);
console.log(visit.getTime() > opened.getTime());
console.log(visit.getDate());
La visita cae el 20 de marzo a las 15:00, después de la apertura. getTime convierte cada momento en un número que se puede ordenar, y la comparación queda en true. La línea de abajo es 20, el día de esa visita, no el resultado de comparar. === pregunta otra cosa: si los dos nombres señalan un solo objeto. Aquí hay dos.
La frase para quien no ve el código
El año y el día salen tal cual. El mes lo escribes como lo cuenta el calendario de pared.
<!DOCTYPE html>
<html>
<head>
<title>dates — page</title>
</head>
<body>
<p id="when">…</p>
<script>
let opened = new Date(2024, 2, 14, 9, 30);
let year = opened.getFullYear();
let displayMonth = opened.getMonth() + 1;
let day = opened.getDate();
let box = document.getElementById("when");
box.textContent = year + "-" + displayMonth + "-" + day;
</script>
</body>
</html>
El párrafo queda en 2024-3-14. Si vuelves a preguntarle el mes al objeto, sigue en 2. El número corrido vive en la frase que arma la página para el ojo. La mañana guardada no se ha movido.
Comprueba el jueves en seis sitios
Tiene que cuadrar con esta mañana, no con un calendario genérico.
- El año entero es 2024, no 24
- Dentro del objeto, marzo es 2
- El 14 sale de
getDatey el 4 del jueves sale degetDay - La hora es 9 y el minuto es 30
- La visita del 20 es posterior, la comparación es true y ese día es 20
- La frase del párrafo es
2024-3-14y el objeto sigue guardando el mes como 2
El programa sigue, el día no
Nadie te avisa. Solo cambia el mes o el dato que creías leer.
- Le pasas 3 a
new Datequeriendo marzo, y construyes abril - Lees el 2 como febrero, o exiges que
getMonthdiga 3 - Pides el 14 con
getDay - Pides el 4 del jueves con
getDate - Decides cuál momento es posterior con
=== - Llamas a
new Date()sin números, y cada recarga trae otra mañana
Lo que tiene que quedarte
- Marzo es 2 porque enero es 0
- El día del mes es
getDate - El día de la semana es
getDay, y el domingo es 0 - Dos momentos se ordenan con el número de
getTime - La frase que lee una persona escribe el mes un paso por delante de lo guardado, y el objeto se queda en 2
- Después viene el objeto Math
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior