|
Mostrar Mensajes
|
Páginas: [1]
|
2
|
Programación / .NET (C#, VB.NET, ASP) / Re: ¿ Se puede hacer esta consulta de fechas ?
|
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: Private Function DateDifference(ByVal Date1 As DateTime, ByVal Date2 As DateTime) As String Dim Time As TimeSpan Dim MonthDiff As Integer, WeekDiff As Integer Do Until Date1 > Date2 Date1 = Date1.AddMonths(1) MonthDiff += 1 Loop MonthDiff -= 1 Date1 = Date1.AddMonths(-1) Time = (Date2 - Date1) WeekDiff = (Time.Days \ 7) Time = (Time - TimeSpan.FromDays(WeekDiff * 7)) Return String.Format("{0} Months, {1} Weeks, {2} Days, {3} Hours, {4} Minutes and {5} Seconds", _ MonthDiff, WeekDiff, Time.Days, Time.Hours, Time.Minutes, Time.Seconds) End Function
¿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 ):Private Function DateDifference(ByVal Date1 As DateTime, ByVal Date2 As DateTime) As String Dim Time As TimeSpan Dim MonthDiff As Integer, QuincenaDiff As Integer, weekdiff As Integer Do Until Date1 > Date2 Date1 = Date1.AddDays(30) MonthDiff += 1 Date1 = Date1.AddDays(15) QuincenaDiff += 1 Date1 = Date1.AddDays(7) weekdiff += 1 Loop MonthDiff -= 1 Date1 = Date1.AddDays(-30) QuincenaDiff -= 1 Date1 = Date1.AddDays(-15) weekdiff -= 1 Date1 = Date1.AddDays(-7) Time = (Date2 - Date1) QuincenaDiff = (Time.Days \ 15) Time = (Time - TimeSpan.FromDays(QuincenaDiff * 15)) Time = (Date2 - Date1) weekdiff = (Time.Days \ 7) Time = (Time - TimeSpan.FromDays(weekdiff * 7)) Return String.Format("{0} Months, {1} Quincenas, {2} weeks, {3} days, {4} Minutes and {5} Seconds", _ MonthDiff, QuincenaDiff, weekdiff, Time.Days, Time.Hours, Time.Minutes, Time.Seconds) End Function
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?.
|
|
|
4
|
Programación / .NET (C#, VB.NET, ASP) / ¿ Se puede hacer esta consulta de fechas ?
|
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?
|
|
|
|
|
|
|