Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] ¿Cómo capturar valor hora y día de reloj?

Estas en el tema de ¿Cómo capturar valor hora y día de reloj? en el foro de Javascript en Foros del Web. Hola a todos. Hace unos días me facilitaron un código de un reloj con javascript. Mi idea es, cuando llegue una hora concreta de ese ...
  #1 (permalink)  
Antiguo 06/09/2017, 09:28
Musiker
Invitado
 
Mensajes: n/a
Puntos:
¿Cómo capturar valor hora y día de reloj?

Hola a todos.

Hace unos días me facilitaron un código de un reloj con javascript. Mi idea es, cuando llegue una hora concreta de ese reloj, comparar con una fecha concreta ya almacenada y hacer una consulta a la BD. Quería saber si se podría hacer tal comparación y cómo (aclaro que no tengo ni idea de Javascript). Muchas gracias por adelantado. Aquí dejo el código del reloj:

Código Javascript:
Ver original
  1. function show5(){
  2. if (!document.layers&&!document.all&&!document.getElementById)
  3. return
  4.  
  5.  var Digital=new Date()
  6.  var hours=Digital.getHours()
  7.  var minutes=Digital.getMinutes()
  8.  var seconds=Digital.getSeconds()
  9.  
  10. var dn="PM"
  11. if (hours<12)
  12. dn="AM"
  13. if (hours>12)
  14. hours=hours-12
  15. if (hours==0)
  16. hours=12
  17.  
  18.  if (minutes<=9)
  19.  minutes="0"+minutes
  20.  if (seconds<=9)
  21.  seconds="0"+seconds
  22. //change font size here to your desire
  23. myclock="<font size='5' face='Arial' ><b>"+hours+":"+minutes+":"+seconds+" "+dn+"</b></font>"
  24. if (document.layers){
  25. document.layers.liveclock.document.write(myclock)
  26. document.layers.liveclock.document.close()
  27. }
  28. else if (document.all)
  29. liveclock.innerHTML=myclock
  30. else if (document.getElementById)
  31. document.getElementById("liveclock").innerHTML=myclock
  32. setTimeout("show5()",1000)
  33.  }
  34.  
  35.  
  36. window.onload=show5

Código HTML:
Ver original
  1. <div class="reloj">
  2.           <br><span class="clock" id="liveclock"></span><br></div>
  #2 (permalink)  
Antiguo 06/09/2017, 10:07
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo capturar valor hora y día de reloj?

Lo que podrias hacer es pasar todo a segundos y hacer la tipica rutina de sumar:

Código Javascript:
Ver original
  1. var someTime = "19:36:42";
  2. someTime = someTime.split(":");
  3. var seeTime = parseInt(someTime[0])*3600+parseInt(someTime[1])*60+parseInt(someTime[2]);
  4.  
  5. var addHour = 0;
  6. if(dn == "PM"){ addHour = 12; }
  7. var myTime = (parseInt(hours)+addHour)*3600+parseInt(minutes)*60+parseInt(seconds);
  8.  
  9. if(myTime == seeTime){
  10. //do something
  11. }

Edito, SUPONIENDO que usas ajax y php, en php haces esto:

Código PHP:
Ver original
  1. $someDate = "2017-11-04";
  2.  
  3. $someDate = strtotime($someDate);
  4. $myDate = strtotime(date("Y-m-d"));
  5.  
  6. if($someDate == $myDate){
  7. //do something
  8. }

Edito2, lo otro que puedes hacer tambien es crear una funcion que te devuelva la fecha en segundos, yo tenia guardada una funcion que devuelve el tiempo unix pero en c++ lo pase a js pero no lo probe el parametro "d" de la funcion debe ser con este patron "YYYY-mm-dd HH:mm:ss"

Código Javascript:
Ver original
  1. function myUnixTime(d){
  2. var mArr = [31,28,31,30,31,30,31,31,30,31,30,31];
  3.  
  4. var spl = d.split(" ");
  5. var date = spl[0].split("-");
  6.  
  7. var y = parseInt(date[0])*365*24*60*60;
  8. var m = parseInt(date[1]);
  9. var d = parseInt(date[2])*24*60*60;
  10.  
  11. var mAdd = 0;
  12. for(var k=0;k<m;k++){
  13. mAdd += mArr[k];
  14. }
  15.  
  16. m = mAdd*24*60*60;
  17.  
  18. var time = spl[1].split(":");
  19.  
  20. var h = parseInt(time[0])*60*60;
  21. var m = parseInt(time[1])*60;
  22. var s = parseInt(time[2]);
  23.  
  24. return y+m+d+h+m+s;
  25. }

Ojo que esta funcion devuelve el tiempo unix (1970 1/2 noche) por lo que omite el ajuste de segundos escalares, le quite lo del 1970

Entonces quedaria ser así


Código Javascript:
Ver original
  1. function clock(id){ //El parametro id es donde se escribirá la hora
  2.  
  3. var seeTime = "2017-09-06 16:14:05"; //fecha y hora de gatillamiento de evento
  4. var clock = document.getElementById(id); //Asignamos una variable al elemento del documento donde escribiremos la hora
  5.  
  6. var Digital=new Date(); //Creamos el objeto Date para obtener la fecha completa
  7. var h = Digital.getHours(); //hora
  8. var m = Digital.getMinutes(); //mins
  9. var s = Digital.getSeconds(); //segs
  10. var year = Digital.getFullYear(); //año
  11. var month = Digital.getMonth()+1; //mes, +1 ya que este metodo da de 0-11 en vez de 1-12
  12. var day = Digital.getDate(); //dia
  13.  
  14.  
  15. //Agregamos los 0 si son menores a 10
  16. if(month < 10){ month = "0"+month; }
  17. if(day < 10){ day = "0"+day; }
  18. if(h < 10){ h = "0"+h; }
  19. if(m < 10){ m = "0"+m; }
  20. if(s < 10){ s = "0"+s; }
  21.  
  22. var myTime = year+"-"+month+"-"+day+" "+h+":"+m+":"+s; //Esta variable es para obtener la fecha completa en formato "YYYY-mm-dd HH:mm:ss" PARA GATILLAR EVENTO
  23.  
  24. h = parseInt(h); //Volvemos a hacer numerico la hora, ya que concatenmos arriba
  25. var hs = "PM"; //Damos la premisa que es PM. "hs" de hour system
  26. if(h > 12){ //Si la hora es mayor que 12....
  27. h -= 12; //Quitamos 12 horas de modo que las 16hr es 16-12=4
  28. }
  29. else{ //De no ser así dejamos tal cual y decimos que es AM
  30. hs = "AM";
  31. }
  32.  
  33. var showTime = h+":"+m+":"+s+" "+hs; //Obtenemos la hora a mostrar "HH:mm:ss AM/PM"
  34. clock.innerHTML = showTime; //Escribimos hora
  35.  
  36.     if(myUnixTime(myTime) == myUnixTime(seeTime)){ //Si myTime == seeTime gatillamos evento
  37.     //Gatillamos evento
  38.     }
  39. }
  40.  
  41.  
  42. function myUnixTime(d){ //Esta funcion obtiene los segundos de una fecha dada en formato "YYYY-mm-dd HH:mm:ss" en este caso la fecha es el parametro "d"
  43. var mArr = [31,28,31,30,31,30,31,31,30,31,30,31]; //Cantidad dias de c/mes
  44.  
  45. var spl = d.split(" "); //Separamos la fecha de la hora spl[0] = fecha, spl[1] = hora
  46. var date = spl[0].split("-"); //Separamos los datos de la fecha date[0] = año, date[1] = mes, date[2] = dia
  47.  
  48. // Es necesario usar parseInt() para obtener el valor numerico de los datos
  49. var y = parseInt(date[0])*365*24*60*60; //Agregamos los segundos que tiene un año
  50. var m = parseInt(date[1]); //Obtenemos el mes, lo usaremos luego
  51. var d = parseInt(date[2])*24*60*60; //Obtenemos los segundos de un dia
  52.  
  53. //Aqui lo que haremos es sumar la cantidad de dias de los meses que han pasado
  54. var mAdd = 0; //Los dias se agregaran en esta variable
  55. for(var k=0;k<m;k++){ //Partimos desde el indice 0 de mArr (cantidad dias/mes) hasta el mes en el que estamos
  56. mAdd += mArr[k]; //Agregamos a mAdd la cantidad de dias de dias del mes con indice k
  57. }
  58.  
  59. m = mAdd*24*60*60; //Obtenemos la cantidad de segundos del total de meses transcurridos
  60.  
  61. var time = spl[1].split(":"); //Separamos los datos de la hora time[0] = hora, time[1] = mins, time[2] = seg
  62.  
  63. var h = parseInt(time[0])*60*60; //Agregamos segundos en 1 hora
  64. var m = parseInt(time[1])*60; //Agregamos segundos en 1 min
  65. var s = parseInt(time[2]); //...
  66.  
  67. return y+m+d+h+m+s; //retornamos la suma de todos los segundos obtenidos
  68. }
  69.  
  70.  
  71. window.onload=function(){ //Cuando la ventana cargue...
  72. setInterval("clock('ID_DE_TU_ELMENTO_HTML')",1000); //Creamos un intervalo de 1000ms a la funcion myClock, ms= mili segundos, 1000ms = 1s
  73. };


PD: porfavor termina cada instruccion con ";"
PD2: No tengo trabajo hoy por eso me di el tiempo de explicar , ya que no sabes de js

Saludos

Última edición por alvaro_trewhela; 06/09/2017 a las 13:49
  #3 (permalink)  
Antiguo 06/09/2017, 16:57
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo capturar valor hora y día de reloj?

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Lo que podrias hacer es pasar todo a segundos y hacer la tipica rutina de sumar:

Código Javascript:
Ver original
  1. var someTime = "19:36:42";
  2. someTime = someTime.split(":");
  3. var seeTime = parseInt(someTime[0])*3600+parseInt(someTime[1])*60+parseInt(someTime[2]);
  4.  
  5. var addHour = 0;
  6. if(dn == "PM"){ addHour = 12; }
  7. var myTime = (parseInt(hours)+addHour)*3600+parseInt(minutes)*60+parseInt(seconds);
  8.  
  9. if(myTime == seeTime){
  10. //do something
  11. }

Edito, SUPONIENDO que usas ajax y php, en php haces esto:

Código PHP:
Ver original
  1. $someDate = "2017-11-04";
  2.  
  3. $someDate = strtotime($someDate);
  4. $myDate = strtotime(date("Y-m-d"));
  5.  
  6. if($someDate == $myDate){
  7. //do something
  8. }

Edito2, lo otro que puedes hacer tambien es crear una funcion que te devuelva la fecha en segundos, yo tenia guardada una funcion que devuelve el tiempo unix pero en c++ lo pase a js pero no lo probe el parametro "d" de la funcion debe ser con este patron "YYYY-mm-dd HH:mm:ss"

Código Javascript:
Ver original
  1. function myUnixTime(d){
  2. var mArr = [31,28,31,30,31,30,31,31,30,31,30,31];
  3.  
  4. var spl = d.split(" ");
  5. var date = spl[0].split("-");
  6.  
  7. var y = parseInt(date[0])*365*24*60*60;
  8. var m = parseInt(date[1]);
  9. var d = parseInt(date[2])*24*60*60;
  10.  
  11. var mAdd = 0;
  12. for(var k=0;k<m;k++){
  13. mAdd += mArr[k];
  14. }
  15.  
  16. m = mAdd*24*60*60;
  17.  
  18. var time = spl[1].split(":");
  19.  
  20. var h = parseInt(time[0])*60*60;
  21. var m = parseInt(time[1])*60;
  22. var s = parseInt(time[2]);
  23.  
  24. return y+m+d+h+m+s;
  25. }

Ojo que esta funcion devuelve el tiempo unix (1970 1/2 noche) por lo que omite el ajuste de segundos escalares, le quite lo del 1970

Entonces quedaria ser así


Código Javascript:
Ver original
  1. function clock(id){ //El parametro id es donde se escribirá la hora
  2.  
  3. var seeTime = "2017-09-06 16:14:05"; //fecha y hora de gatillamiento de evento
  4. var clock = document.getElementById(id); //Asignamos una variable al elemento del documento donde escribiremos la hora
  5.  
  6. var Digital=new Date(); //Creamos el objeto Date para obtener la fecha completa
  7. var h = Digital.getHours(); //hora
  8. var m = Digital.getMinutes(); //mins
  9. var s = Digital.getSeconds(); //segs
  10. var year = Digital.getFullYear(); //año
  11. var month = Digital.getMonth()+1; //mes, +1 ya que este metodo da de 0-11 en vez de 1-12
  12. var day = Digital.getDate(); //dia
  13.  
  14.  
  15. //Agregamos los 0 si son menores a 10
  16. if(month < 10){ month = "0"+month; }
  17. if(day < 10){ day = "0"+day; }
  18. if(h < 10){ h = "0"+h; }
  19. if(m < 10){ m = "0"+m; }
  20. if(s < 10){ s = "0"+s; }
  21.  
  22. var myTime = year+"-"+month+"-"+day+" "+h+":"+m+":"+s; //Esta variable es para obtener la fecha completa en formato "YYYY-mm-dd HH:mm:ss" PARA GATILLAR EVENTO
  23.  
  24. h = parseInt(h); //Volvemos a hacer numerico la hora, ya que concatenmos arriba
  25. var hs = "PM"; //Damos la premisa que es PM. "hs" de hour system
  26. if(h > 12){ //Si la hora es mayor que 12....
  27. h -= 12; //Quitamos 12 horas de modo que las 16hr es 16-12=4
  28. }
  29. else{ //De no ser así dejamos tal cual y decimos que es AM
  30. hs = "AM";
  31. }
  32.  
  33. var showTime = h+":"+m+":"+s+" "+hs; //Obtenemos la hora a mostrar "HH:mm:ss AM/PM"
  34. clock.innerHTML = showTime; //Escribimos hora
  35.  
  36.     if(myUnixTime(myTime) == myUnixTime(seeTime)){ //Si myTime == seeTime gatillamos evento
  37.     //Gatillamos evento
  38.     }
  39. }
  40.  
  41.  
  42. function myUnixTime(d){ //Esta funcion obtiene los segundos de una fecha dada en formato "YYYY-mm-dd HH:mm:ss" en este caso la fecha es el parametro "d"
  43. var mArr = [31,28,31,30,31,30,31,31,30,31,30,31]; //Cantidad dias de c/mes
  44.  
  45. var spl = d.split(" "); //Separamos la fecha de la hora spl[0] = fecha, spl[1] = hora
  46. var date = spl[0].split("-"); //Separamos los datos de la fecha date[0] = año, date[1] = mes, date[2] = dia
  47.  
  48. // Es necesario usar parseInt() para obtener el valor numerico de los datos
  49. var y = parseInt(date[0])*365*24*60*60; //Agregamos los segundos que tiene un año
  50. var m = parseInt(date[1]); //Obtenemos el mes, lo usaremos luego
  51. var d = parseInt(date[2])*24*60*60; //Obtenemos los segundos de un dia
  52.  
  53. //Aqui lo que haremos es sumar la cantidad de dias de los meses que han pasado
  54. var mAdd = 0; //Los dias se agregaran en esta variable
  55. for(var k=0;k<m;k++){ //Partimos desde el indice 0 de mArr (cantidad dias/mes) hasta el mes en el que estamos
  56. mAdd += mArr[k]; //Agregamos a mAdd la cantidad de dias de dias del mes con indice k
  57. }
  58.  
  59. m = mAdd*24*60*60; //Obtenemos la cantidad de segundos del total de meses transcurridos
  60.  
  61. var time = spl[1].split(":"); //Separamos los datos de la hora time[0] = hora, time[1] = mins, time[2] = seg
  62.  
  63. var h = parseInt(time[0])*60*60; //Agregamos segundos en 1 hora
  64. var m = parseInt(time[1])*60; //Agregamos segundos en 1 min
  65. var s = parseInt(time[2]); //...
  66.  
  67. return y+m+d+h+m+s; //retornamos la suma de todos los segundos obtenidos
  68. }
  69.  
  70.  
  71. window.onload=function(){ //Cuando la ventana cargue...
  72. setInterval("clock('ID_DE_TU_ELMENTO_HTML')",1000); //Creamos un intervalo de 1000ms a la funcion myClock, ms= mili segundos, 1000ms = 1s
  73. };


PD: porfavor termina cada instruccion con ";"
PD2: No tengo trabajo hoy por eso me di el tiempo de explicar , ya que no sabes de js

Saludos
Increíble!! Funciona perfecto y te lo agradezco muchísimo. Lo estudiaré a fondo y lo usaré para aprender Javascript!! Un millón de gracias, Álvaro, de verdad, trabajaste demasiado!

Saludos!!!
  #4 (permalink)  
Antiguo 07/09/2017, 00:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ¿Cómo capturar valor hora y día de reloj?

Hola:

Una vieja respuesta: Fecha + Hora

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 07/09/2017, 03:32
Musiker
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo capturar valor hora y día de reloj?

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Una vieja respuesta: Fecha + Hora

Saludos
Muchas gracias, paisano andaluz! Saludos!
  #6 (permalink)  
Antiguo 07/09/2017, 08:28
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo capturar valor hora y día de reloj?

pequeño detallito

cambia

var m = parseInt(time[1])*60;
por
var mn = parseInt(time[1])*60;

y

return y+m+d+h+m+s;
por
return y+m+d+h+mn+s;

Última edición por alvaro_trewhela; 07/09/2017 a las 10:25

Etiquetas: html, valor
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 10:42.