Un saludo a todos los lectores, en este post vamos a hablar un poco del manejo de fechas con
javaScript, como aclaracion no pretendo hacer un analisis extenso sobre este tema si no mas
bien crear una pequeña guia de referencia de la cual podamos partir para ahondar mas en este
tema.
-¿Como maneja java Script las fechas?
Ah pues bien amigo para empezar te dire que el objeto encargado de la manipulacion de fechas
en JS es el objeto date.
JS maneja las fechas en milisegundos, esto se entendera mejor en el ejemplo.
Todos los valores que pasemos como parametros al constructor del objeto date seran entero.
En los meses 0 = ENERO y 11 = DICIEMBRE
En los dias 0 = DOMINGO y 6 = SABADO
Las horas se ponen en formato HH:MM:SS (las horas van de 0 a 23, los minutos y los segundos de
0 a 59)
Si creamos un objeto date sin parametros, este tomara los valores de la fecha actual
ejemplos:
var fecha= new Date(2008,11); en parametros (año, mes)
var fecha= new Date(2008,11,12); en parametros (año, mes,dia)
var fecha= new Date(2008,11,12,10); en parametros (año, mes, dia, horas)
var fecha= new Date(2008,11, 12, 10, 30); en parametros (año, mes, dia, horas, minutos)
var fecha= new Date(2008,11, 12, 10, 30, 50); en parametros (año, mes, dia, horas, minutos, segundos)
-ok, ok ya se como construir un objeto Date pero ahora dime ¿que puedo hacer con ese mentado objeto?
Ah bueno mi querido amigo para poder manipular este objeto como en todos debemos de hacer uso
de sus metodos los cuales se dividen en 2, los primeros sirven para obtener informacion del
objeto date tales como la fecha actual o en que año estamos etc, el segundo tipo de metodos
sirven para establecer los valores del objeto date, es decir podemos hacer que un objeto date
nos guarde el valor de un año poniendo setYear(1999); pues bien sin mas te dejo con los
metodos mas comunes del objeto date:
metodos:
nota: llamar metodos ejemplo: fecha.getDate(); donde fecha es un objeto date
getDate(); devuelve el dia como un entero entre 1 y 31
getDay(); devuelve un num del 0 al 6 indicando siel dia es lunes, martes, miercoles ...
getHours(); Devuelve la hora
getMinutes(); Devuelve los minutos
getMonth(); devuelve el mes como un numero de 0 a 11
getTime(); Devuelve el tiempo transcurrido en milisegundos desde el 1 de enero de 1970 hasta
el momento definido en el objeto date
getYear(); devuelve el año
si a los metodos anteriores les quitamos el get y le ponemos el set podemos modificar dicho
parametro en el objeto date p.e:
setDate(12,0) en parametros (dia, mes)->pone en el objeto date el valor del dia 12 del mes de enero.
setDay();
setHours(); ... etc
toGMTString(); Devuelve una cadena que usa las convenciones de internet con la zona horaria.
- Ah orale pues no esta tan complicado esto del objeto date pero ahora dime ¿ para que puedo ocupar todo esto?
Bueno bueno me agrada que vallas entendiendo todo, pues bien como en todo tipo de
programacion, la funcionalidad que puedas encontrarle ah esto solo esta limitado por tu
creatividad, ahora bien los usos mas comunes que se le dan a los objetos date son para guardar
fechas ya sea la actual o una especifica y hacer operaciones con ellas.
-Haber haber, ahi si ya me perdiste como es eso de hacer operaciones con ellas???
Ok no te preocupes tal vez no fui lo bastante claro pero ahora te explico, puede ser muy
posible que un cliente te pida en una aplicacion el manejo de fechas como por ejemplo el
establecer determinadas fechas limites, es decir que pongas una fecha limite apartir de la
fecha actual y llegada la fecha limite el sistema que desarrollamos nos mande un aviso.
Para que me entiendas mejor has de cuenta que hoy es 12 de agosto del 2008 y que registras un
pedido ya que tu eres dueño de una tienda de viveres, ahora ese pedido en automatico sabemos
que debe de ser entregado antes de 10 dias apartir de la fecha en que se registro el pedido,
pues bien usando el objeto date sumaremos esos 10 dias a nuestra fecha actual para de esta
manera obtener la fecha limite de esta forma si el pedido aun no ah sido atendido y la fecha
limite esta por cumplirse, podemos mandar un mensage informando elvencimiento de dicha fecha.
-ok ok creo que ya te entendi eso de sumar fechas y me supongo que para restar es algo similar, pero segun me acuerdo dijiste que java script maneja todo lo que son fechas en milisegundos, entonces no me queda muy claro ¿como puedo sumar o restar fechas?
ok lo siento tienes razon esto puede parecer muy confuso sin embargo es muy sencillo, me
alegra que mencionaras la propiedad que dice que JS maneja las fechas en milisegundos, eso
quiere decir que pones atencion y vas realmente por buen camino, ademas esta propiedad es la
base para el manejo de fechas con JS. Muchos olvidan esta propiedad y quieren manejar fechas
sumandole al objeto date un numero o haciendo teatro y maromas.
-bien bien si ya dijiste mucho pero la verdad no te acabo de entender
mira lo que quiero decir es que algunos al no estar familiarizados con el objeto date frente a
situaciones como:
sumarle fecha limite ->3 dias apartir de la fecha actual
entonces ellos hacen algo como:
var fecha_actual=new Date();
var fecha_limite=fecha_actual + 3;
Eso por supuesto que es incorrecto,al menos en la estructura elemental de javaScript, algo
como eso se puede lograr a traves de ciertas librerias que ya comentaremos despues, pues bien
te decia y por que es incorrecto?
- no se tu dime, tu eres el que me esta enseñando
jejeje que conchudote me saliste eh pues bien eso es incorrecto por que presisamente se
olvidaron de lapropiedad que me dijiste, quieren sumar el tiempo en dias y ...
- ya se ya se JS maneja el tiempo en milisegundos, pero entonces como le hago para agregar esos 3 dias que quiero digo, segun tu ejemplo?
ahh tipo listillo, ok te dire mira lo primero ya lo sabes todo se maneja en milisegundos, lo
segundo que debes de saber es que los dos metodos que te permitiran manipular de la forma que
queremos las fechas son los metodos getTime() y setTime();, por sino recuerdas para que servia
cada uno aqui te lo vuelvo a repetir:
getTime(); Devuelve el tiempo transcurrido en milisegundos desde el 1 de enero de 1970 hasta
el momento definido en el objeto date
setTime(); Establece una fecha pasandole en milisegundos el valor de esta.
Pues bien para manejar fechas esos son los elementos basicos que siempre debemos recordar.
ok,ok ya te entendi eso pero ya me lo repetiste muchas veces, dejate de rodeos y terminame de explicar como manipulo esas fechas???
Mira pues contigo, ok ya me dejo de rodeos tu ansiedad me agrada por que parece que estas
sediento de conocimientos, pues mira para que acabes de entender esto aqui te pongo un ejemplo
que encontre en:
-vaya hasta que por fin vas a poner algo interesante!!!!
Bueno como ya repeti hasta el cansancio JS maneja el tiempo en milisegundos por lo que los 3
dias que deseamos sumar a la fecha actual los debemos de convertir a milisegundos, bueno por
si no andas muy despierto la conversion quedaria asi = 3dias x 24 horas x 60 minutos x 60
segundos x 1000 para pasar todo a milisegundos, ahora veamos como hacemos esto en una funcion:
function actualizar(){
milisegundos=parseInt(3*24*60*60*1000);//pasando los 3 dias a milisegundos
fecha=new Date();//creamos un objeto date con la fecha actual
dia=fecha.getDate();//obtenemosdia actual
mes=fecha.getMonth()+1;//obtenemos mes actual
anio=fecha.getYear();//obtenemos el año actual
document.theForm.campo1.value=dia+"/"+mes+"/"+anio;//mostramos la fecha actual en un campo de texto.
tiempo=fecha.getTime(); //obtenemos el valor en milisegundos de la fecha actual.
total=fecha.setTime(parseInt(tiempo+milisegundos)); //sumamos a el valor obtenido los
milisegundos correspondientes a los 3 dias que deseamos aumentar, en caso de que quisieras
estabeceruna fecha 3 dias antes en vez de 3 dias despues, restamos el valor en vez de sumarlo.
dia=fecha.getDate();
mes=fecha.getMonth()+1;
anio=fecha.getYear();
document.theForm.campo2.value=dia+"/"+mes+"/"+anio; //establecemos fecha limite en un campo de texto
}
Aunque este manejo de fechas sea correcto, es mejor que este calculo lo hagas si es posible en
el servidor en lugar del cliente.
proximo post DateJs donde veremos lo facil que es el manejo de fechas con esta libreria gratuita y que nos simplifica en buen medida el trabajo, ademas es muy facilde implementar, bueno hasta el siguiente post.
javaScript, como aclaracion no pretendo hacer un analisis extenso sobre este tema si no mas
bien crear una pequeña guia de referencia de la cual podamos partir para ahondar mas en este
tema.
-¿Como maneja java Script las fechas?
Ah pues bien amigo para empezar te dire que el objeto encargado de la manipulacion de fechas
en JS es el objeto date.
JS maneja las fechas en milisegundos, esto se entendera mejor en el ejemplo.
Todos los valores que pasemos como parametros al constructor del objeto date seran entero.
En los meses 0 = ENERO y 11 = DICIEMBRE
En los dias 0 = DOMINGO y 6 = SABADO
Las horas se ponen en formato HH:MM:SS (las horas van de 0 a 23, los minutos y los segundos de
0 a 59)
Si creamos un objeto date sin parametros, este tomara los valores de la fecha actual
ejemplos:
var fecha= new Date(2008,11); en parametros (año, mes)
var fecha= new Date(2008,11,12); en parametros (año, mes,dia)
var fecha= new Date(2008,11,12,10); en parametros (año, mes, dia, horas)
var fecha= new Date(2008,11, 12, 10, 30); en parametros (año, mes, dia, horas, minutos)
var fecha= new Date(2008,11, 12, 10, 30, 50); en parametros (año, mes, dia, horas, minutos, segundos)
-ok, ok ya se como construir un objeto Date pero ahora dime ¿que puedo hacer con ese mentado objeto?
Ah bueno mi querido amigo para poder manipular este objeto como en todos debemos de hacer uso
de sus metodos los cuales se dividen en 2, los primeros sirven para obtener informacion del
objeto date tales como la fecha actual o en que año estamos etc, el segundo tipo de metodos
sirven para establecer los valores del objeto date, es decir podemos hacer que un objeto date
nos guarde el valor de un año poniendo setYear(1999); pues bien sin mas te dejo con los
metodos mas comunes del objeto date:
metodos:
nota: llamar metodos ejemplo: fecha.getDate(); donde fecha es un objeto date
getDate(); devuelve el dia como un entero entre 1 y 31
getDay(); devuelve un num del 0 al 6 indicando siel dia es lunes, martes, miercoles ...
getHours(); Devuelve la hora
getMinutes(); Devuelve los minutos
getMonth(); devuelve el mes como un numero de 0 a 11
getTime(); Devuelve el tiempo transcurrido en milisegundos desde el 1 de enero de 1970 hasta
el momento definido en el objeto date
getYear(); devuelve el año
si a los metodos anteriores les quitamos el get y le ponemos el set podemos modificar dicho
parametro en el objeto date p.e:
setDate(12,0) en parametros (dia, mes)->pone en el objeto date el valor del dia 12 del mes de enero.
setDay();
setHours(); ... etc
toGMTString(); Devuelve una cadena que usa las convenciones de internet con la zona horaria.
- Ah orale pues no esta tan complicado esto del objeto date pero ahora dime ¿ para que puedo ocupar todo esto?
Bueno bueno me agrada que vallas entendiendo todo, pues bien como en todo tipo de
programacion, la funcionalidad que puedas encontrarle ah esto solo esta limitado por tu
creatividad, ahora bien los usos mas comunes que se le dan a los objetos date son para guardar
fechas ya sea la actual o una especifica y hacer operaciones con ellas.
-Haber haber, ahi si ya me perdiste como es eso de hacer operaciones con ellas???
Ok no te preocupes tal vez no fui lo bastante claro pero ahora te explico, puede ser muy
posible que un cliente te pida en una aplicacion el manejo de fechas como por ejemplo el
establecer determinadas fechas limites, es decir que pongas una fecha limite apartir de la
fecha actual y llegada la fecha limite el sistema que desarrollamos nos mande un aviso.
Para que me entiendas mejor has de cuenta que hoy es 12 de agosto del 2008 y que registras un
pedido ya que tu eres dueño de una tienda de viveres, ahora ese pedido en automatico sabemos
que debe de ser entregado antes de 10 dias apartir de la fecha en que se registro el pedido,
pues bien usando el objeto date sumaremos esos 10 dias a nuestra fecha actual para de esta
manera obtener la fecha limite de esta forma si el pedido aun no ah sido atendido y la fecha
limite esta por cumplirse, podemos mandar un mensage informando elvencimiento de dicha fecha.
-ok ok creo que ya te entendi eso de sumar fechas y me supongo que para restar es algo similar, pero segun me acuerdo dijiste que java script maneja todo lo que son fechas en milisegundos, entonces no me queda muy claro ¿como puedo sumar o restar fechas?
ok lo siento tienes razon esto puede parecer muy confuso sin embargo es muy sencillo, me
alegra que mencionaras la propiedad que dice que JS maneja las fechas en milisegundos, eso
quiere decir que pones atencion y vas realmente por buen camino, ademas esta propiedad es la
base para el manejo de fechas con JS. Muchos olvidan esta propiedad y quieren manejar fechas
sumandole al objeto date un numero o haciendo teatro y maromas.
-bien bien si ya dijiste mucho pero la verdad no te acabo de entender
mira lo que quiero decir es que algunos al no estar familiarizados con el objeto date frente a
situaciones como:
sumarle fecha limite ->3 dias apartir de la fecha actual
entonces ellos hacen algo como:
var fecha_actual=new Date();
var fecha_limite=fecha_actual + 3;
Eso por supuesto que es incorrecto,al menos en la estructura elemental de javaScript, algo
como eso se puede lograr a traves de ciertas librerias que ya comentaremos despues, pues bien
te decia y por que es incorrecto?
- no se tu dime, tu eres el que me esta enseñando
jejeje que conchudote me saliste eh pues bien eso es incorrecto por que presisamente se
olvidaron de lapropiedad que me dijiste, quieren sumar el tiempo en dias y ...
- ya se ya se JS maneja el tiempo en milisegundos, pero entonces como le hago para agregar esos 3 dias que quiero digo, segun tu ejemplo?
ahh tipo listillo, ok te dire mira lo primero ya lo sabes todo se maneja en milisegundos, lo
segundo que debes de saber es que los dos metodos que te permitiran manipular de la forma que
queremos las fechas son los metodos getTime() y setTime();, por sino recuerdas para que servia
cada uno aqui te lo vuelvo a repetir:
getTime(); Devuelve el tiempo transcurrido en milisegundos desde el 1 de enero de 1970 hasta
el momento definido en el objeto date
setTime(); Establece una fecha pasandole en milisegundos el valor de esta.
Pues bien para manejar fechas esos son los elementos basicos que siempre debemos recordar.
ok,ok ya te entendi eso pero ya me lo repetiste muchas veces, dejate de rodeos y terminame de explicar como manipulo esas fechas???
Mira pues contigo, ok ya me dejo de rodeos tu ansiedad me agrada por que parece que estas
sediento de conocimientos, pues mira para que acabes de entender esto aqui te pongo un ejemplo
que encontre en:
http://www.webestilo.com/foros/mensaje.phtml?foro=11&msg=39495
, acoplado a nuestro caso que es aumentar 3 dias la fecha actual para obtener asi la fecha limite.-vaya hasta que por fin vas a poner algo interesante!!!!
Bueno como ya repeti hasta el cansancio JS maneja el tiempo en milisegundos por lo que los 3
dias que deseamos sumar a la fecha actual los debemos de convertir a milisegundos, bueno por
si no andas muy despierto la conversion quedaria asi = 3dias x 24 horas x 60 minutos x 60
segundos x 1000 para pasar todo a milisegundos, ahora veamos como hacemos esto en una funcion:
function actualizar(){
milisegundos=parseInt(3*24*60*60*1000);//pasando los 3 dias a milisegundos
fecha=new Date();//creamos un objeto date con la fecha actual
dia=fecha.getDate();//obtenemosdia actual
mes=fecha.getMonth()+1;//obtenemos mes actual
anio=fecha.getYear();//obtenemos el año actual
document.theForm.campo1.value=dia+"/"+mes+"/"+anio;//mostramos la fecha actual en un campo de texto.
tiempo=fecha.getTime(); //obtenemos el valor en milisegundos de la fecha actual.
total=fecha.setTime(parseInt(tiempo+milisegundos)); //sumamos a el valor obtenido los
milisegundos correspondientes a los 3 dias que deseamos aumentar, en caso de que quisieras
estabeceruna fecha 3 dias antes en vez de 3 dias despues, restamos el valor en vez de sumarlo.
dia=fecha.getDate();
mes=fecha.getMonth()+1;
anio=fecha.getYear();
document.theForm.campo2.value=dia+"/"+mes+"/"+anio; //establecemos fecha limite en un campo de texto
}
Aunque este manejo de fechas sea correcto, es mejor que este calculo lo hagas si es posible en
el servidor en lugar del cliente.
proximo post DateJs donde veremos lo facil que es el manejo de fechas con esta libreria gratuita y que nos simplifica en buen medida el trabajo, ademas es muy facilde implementar, bueno hasta el siguiente post.
3 comentarios:
wen codigo
pero al momento de implementar (11 y 12) dias aparece la misma fecha.....
saludos, bueno nada mas sime podrias ampliar tu duda por que no queda claro a lo que te refieres y con mucho gusto le daremos una solucion.
Por favor las faltas! que gente lo lea lo tomará como válido!
haber, haber = A ver, A ver
Publicar un comentario