Título: ¿ Se puede hacer esta consulta de fechas ? Publicado por: ostrede en 14 Agosto 2013, 02:58 am Hola, quiero hacer una consulta en vbnet de un intervalo de fechas. Quiero que me diga tal como lo siguiente:
Function sTiempo(dInicio As Date, dFin As Date) As String sTiempo = Str((DateDiff("s", dInicio, dFin) \ 86400) Mod 365) & " días, " sTiempo = sTiempo & Str((DateDiff("s", dInicio, dFin) \ 3600) Mod 24) & " horas, " sTiempo = sTiempo & Str((DateDiff("s", dInicio, dFin) \ 60) Mod 60) & " minutos, " sTiempo = sTiempo & Str(DateDiff("s", dInicio, dFin) Mod 60) & " segundos." End Function Lo que hace es calcular la diferencia en segundos y después ajustarla a dias, horas... p.e. Imaginemos que en un TextBox (Text1) tienes una fecha en este formato "25/07/2007 15:00:00" y en otro (Text2) lo siguiente "26/07/2007 17:25:32" Si haces una llamada a la función así: Variable = sTiempo(Text1, Text2) retornará la cadena "1 días, 2 horas, 25 minutos, 32 segundos." Pero yo quiero que el intervalo me diga los meses, semanas y días. Por ejemplo del 01/03/2013 al 10/04/2013 y me diga que hay 1 MES, 1 SEMANA y 3 DÍAS. ¿Se podría hacer? Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Eleкtro en 14 Agosto 2013, 10:18 am ¿Se podría hacer? Así lo hice yo: EDITO: He extendido la función para obtener horas, minutos y segundos. Código
PD: Mi función no cuenta el primer día restante porque me parece incorrecto, del 1 al 7 no hay 7 días de diferencia, hay 6, si quieres obtener el resultado que comentas pues símplemente añade un "+ 1" a la diferencia de días. Saludos! Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: ostrede en 15 Agosto 2013, 20:17 pm He probado el código pero cuando pongo por ejemplo del 15/08/2013 al 02/09/2013 me tira lo siguiente:
1 Months, -1 Weeks, -6 Days, 0 Hours, 0 Minutes and 0 Seconds Debería decirme 2 semanas y 4 días. No sé porqué sale la resta negativa y cómo solucionarlo. Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Eleкtro en 15 Agosto 2013, 20:47 pm No me habia dado ningún error por el momento, pero vaya, tienes razón.
No se si podré solucionarlo, ya investigaré saludos Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Eleкtro en 15 Agosto 2013, 21:35 pm Es reálmente necesario obtener el valor de las semanas?, los formatos de string standard de un DateTime no pueden obtener este valor...
Ahora lo he hecho de otra manera ya que el primer code no funcionaba con algunas fechas, pero el valor de las semanas no se me ocurre como obtenerlo: CORREGIDO (eso creo, aun no he probado la modificación pero debería funcionar): Código
Saludos. Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Novlucker en 15 Agosto 2013, 22:14 pm EleKtro H@cker, sin probarla, esa función no es correcta :P
¿Qué pasa si le paso como parámetros las fechas "01/01/2013 14:00:00" y "02/01/2013 13:00:30"? Saludos Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Eleкtro en 15 Agosto 2013, 22:50 pm EleKtro H@cker, sin probarla, esa función no es correcta :P ¿Qué pasa si le paso como parámetros las fechas "01/01/2013 14:00:00" y "02/01/2013 13:00:30"? Saludos Es verdad no me di cuenta, malditas "horas" xD Bueno todo tiene solución, entonces hay que substraer en lugar de restar: Código
Llevo un lio tremendo para sacar la fecha con eficacia (por ejemplo entre meses como febrero con 28 días), el valor de las semanas se resiste, pero nadie tiene la solución: http://stackoverflow.com/questions/18259835/function-to-get-a-custom-date-difference Saludos! Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Novlucker en 15 Agosto 2013, 23:03 pm A eso iba, cuando pasas al detalle de horas/minutos/segundos, entonces pasas a tener problemas a partir de los meses, porque un mes son 30,4368499 días según google :P
Había implementado un método pero tiene el mismo problema a partir del mes, por el tema de redondeo y demás (es el mismo método que se utiliza por ejemplo para dividir un importe en billetes). Código
Creo que se podría implementar el método, pero ya no es tan "sencillo" Saludos Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: Eleкtro en 16 Agosto 2013, 02:13 am La ciencia de "1 mes" no es exacta, son todo promedios, Google dice que son 30 días como ha dicho Novlucker, pero la Wikipedia dice que son 29, y nosotros cuando decimos un mes (al menos yo) pensamos en 30 días sin tener el cuenta el més en el que estamos, pero cuando decimos "el próximos més" pensamos en el día 1 del siguiente més, en fín por todo esto creo que no hay que comerse mucho la cabeza para intentar calcular al milímetro los meses.
Así que aquí dejo el code funcional para VB que me ha proporcionado una persona, el code funciona con la fecha problemática que ha comentado @ostrede y también con los horarios: Código
¿Tema solucionado? xD. Saludos Título: Re: ¿ Se puede hacer esta consulta de fechas ? Publicado por: ostrede en 16 Agosto 2013, 07:50 am La ciencia de "1 mes" no es exacta, son todo promedios, Google dice que son 30 días como ha dicho Novlucker, pero la Wikipedia dice que son 29, y nosotros cuando decimos un mes (al menos yo) pensamos en 30 días sin tener el cuenta el més en el que estamos, pero cuando decimos "el próximos més" pensamos en el día 1 del siguiente més, en fín por todo esto creo que no hay que comerse mucho la cabeza para intentar calcular al milímetro los meses. Así que aquí dejo el code funcional para VB que me ha proporcionado una persona, el code funciona con la fecha problemática que ha comentado @ostrede y también con los horarios: Código
¿Tema solucionado? xD. Saludos ¡¡ BUENÍSIMO !! Ahora estoy trabajando con éste código para que me dé los meses, quincenas, semanas y días (con la salvedad que 1 mes lo cuente como 30 días, es así como lo quiero) pero creo que me estoy haciendo un lío. Mi código es el siguiente( advierto que soy un novato en VBNET ): Código
Pero cuando por ejemplo pongo desde el 16/08/2013 al 31/08/2013 me tira 1 quincena, 2 semanas y 1 día. Cuando debería decir 1 quincena. ¿Qué estoy haciendo mal?. |