Foros del Web » Programando para Internet » Javascript »

Trabajar con Fechas

Estas en el tema de Trabajar con Fechas en el foro de Javascript en Foros del Web. Estoy aprendiendo a trabajar con fechas en JS, quiero hacerlo sin utilizar librerias externas. Me gustaría mostrar: Has estado programando desde el lunes +X+ hasta ...
  #1 (permalink)  
Antiguo 20/07/2020, 08:24
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 163
Antigüedad: 8 años
Puntos: 11
Pregunta Trabajar con Fechas

Estoy aprendiendo a trabajar con fechas en JS, quiero hacerlo sin utilizar librerias externas.

Me gustaría mostrar:

Has estado programando desde el lunes +X+ hasta el domingo +Y+ del +MES+

- Dudo cómo podría controlar si me encuentro por ejemplo en la última semana de 1 mes, dónde el lunes X sería del MES en curso, pero el domingo Y sería del siguiente MES.

Así el texto sería distinto:
Has estado programando desde el lunes +X+ de +MES+ hasta el domingo +Y+ del +MES_SIGUIENTE+

Este último caso se daría siempre que Y es menor que 7.

- Lo mismo para saber si me encuentro en la primera semana de mes:
¿Si lo ejecuto un mes, por ejemplo Julio, el 1 miércoles, cómo sabría que el lunes de esa semana es 29 de Junio?

Saber el día actual de la semana (domingo, lunes, martes, miercoles ...) y el número. Si es menor que la posición, el lunes se trara del mes anterior.


No sé si el enfoque que estoy haciendo es el correcto o existen funciones específicas para ello en JS.

Aquí un inicio de código: (Sin los casos de inicio o fin de mes)

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  4. var f=new Date();
  5. var numDia = f.getUTCDate()-(f.getDay()-1);
  6. var finSemana = numDia +6;
  7.  
  8. html="<h1>Has estado programando desde el lunes ";
  9. html+=numDia;
  10. html+=" hasta el domingo ";
  11. html+=finSemana;
  12. html+=" de ";
  13. html+= meses[f.getMonth()];
  14. html+="</h1> ";
  15. document.getElementById("textoProgramacion").innerHTML=html;
  16. </script>

Última edición por senseeye3led; 20/07/2020 a las 09:06 Razón: anyadir código
  #2 (permalink)  
Antiguo 20/07/2020, 10:34
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Trabajar con Fechas

Cita:
Iniciado por senseeye3led Ver Mensaje
Estoy aprendiendo a trabajar con fechas en JS, quiero hacerlo sin utilizar librerias externas.

Me gustaría mostrar:

Has estado programando desde el lunes +X+ hasta el domingo +Y+ del +MES+

- Dudo cómo podría controlar si me encuentro por ejemplo en la última semana de 1 mes, dónde el lunes X sería del MES en curso, pero el domingo Y sería del siguiente MES.

Así el texto sería distinto:
Has estado programando desde el lunes +X+ de +MES+ hasta el domingo +Y+ del +MES_SIGUIENTE+

Este último caso se daría siempre que Y es menor que 7.

- Lo mismo para saber si me encuentro en la primera semana de mes:
¿Si lo ejecuto un mes, por ejemplo Julio, el 1 miércoles, cómo sabría que el lunes de esa semana es 29 de Junio?

Saber el día actual de la semana (domingo, lunes, martes, miercoles ...) y el número. Si es menor que la posición, el lunes se trara del mes anterior.


No sé si el enfoque que estoy haciendo es el correcto o existen funciones específicas para ello en JS.

Aquí un inicio de código: (Sin los casos de inicio o fin de mes)

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  4. var f=new Date();
  5. var numDia = f.getUTCDate()-(f.getDay()-1);
  6. var finSemana = numDia +6;
  7.  
  8. html="<h1>Has estado programando desde el lunes ";
  9. html+=numDia;
  10. html+=" hasta el domingo ";
  11. html+=finSemana;
  12. html+=" de ";
  13. html+= meses[f.getMonth()];
  14. html+="</h1> ";
  15. document.getElementById("textoProgramacion").innerHTML=html;
  16. </script>
solo haz una condicional con respecto al numero de año y al mes,

201912 es menor al 202001 significa que la fecha paso de años
para mas ejemplos de javascript puro, buscalo siempre mencionando


javascript vanilla, con ello no te saldra relacionado con frameworks
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 22/07/2020, 00:26
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 163
Antigüedad: 8 años
Puntos: 11
Respuesta: Trabajar con Fechas

SOLUCIONADO.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  3. var f=new Date();
  4. var tDia = new Date();
  5. var ms = tDia - ((f.getDay()-1)*86400000);
  6. const dateObj = new Date(ms);
  7. var humanoDia = dateObj.toLocaleString("es-ES",{day: "numeric"});
  8. var ms2 = ms+6*86400000;
  9. const dateObjfin = new Date(ms2);
  10. dateObjfin.toString();
  11. var finSemana = dateObjfin.toLocaleString("es-ES",{day: "numeric"});
  12.  
  13. html="<h1>Has estado programando desde el lunes ";
  14. html+=humanoDia;
  15. html+=" hasta el domingo ";
  16. html+=finSemana;
  17. html+=" de ";
  18. html+= meses[f.getMonth()];
  19. html+="</h1> ";
  20. document.getElementById("textoProgramacion").innerHTML=html;
  21. </script>

Al tratarse de objetos tipo fecha no es necesario controlar si +finSemana es menor que 7 para poder calcular +humanoDia que es del mes anterior. Al tratar las fechas en milisegundos JS los convierte correctamente.

Última edición por senseeye3led; 22/07/2020 a las 00:39

Etiquetas: js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:08.