años,meses,dias

03/06/2006 - 22:06 por Jose | Informe spam
Existe alguna funcion en vb.net 2003 que muestre los años,meses y dias
transcurridos entre dos fechas?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 David Sans
04/06/2006 - 09:23 | Informe spam
Hola

Mira esta funcion:

Dim Fecha1 As DateTime = "01/01/2006"
Dim fecha2 As DateTime = Now()
MessageBox.Show(DateDiff(DateInterval.Day, Fecha1, fecha2))
MessageBox.Show(DateDiff(DateInterval.Month, Fecha1, fecha2))
MessageBox.Show(DateDiff(DateInterval.Year, Fecha1, fecha2))

David Sans


"Jose" escribió en el mensaje news:
Existe alguna funcion en vb.net 2003 que muestre los años,meses y dias transcurridos entre dos fechas?

Gracias de antemano.

Respuesta Responder a este mensaje
#2 SoftJaén
04/06/2006 - 09:36 | Informe spam
"Jose" preguntó:

Existe alguna funcion en vb.net 2003 que muestre los años,meses y dias
transcurridos entre dos fechas?



Otra alternativa a la función «DateDiff» de Visual Basic, es utilizar los
métodos que nos proporciona la estructura «DateTime» del marco de trabajo de
.net, en concreto, el método «Subtract», si tu intención es restar fechas,
el cual te devuelve un objeto «TimeSpan».

Consulta en la ayuda de Visual Basic .net el método «Subtract», donde
encontrarás un ejemplo para restar fechas.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#3 Daniel A. Calvin
04/06/2006 - 18:48 | Informe spam
Hola Enrique

Quiero hacer un cometario sobre tu propuesta de utilizar subtract.

El resultado de dicha operación es válido para días. horas, minutos, etc.
Pero no para meses, años

Ej.:
DateTime Day01 = new DateTime(2004, 02, 01);
DateTime Day02 = new DateTime(2004, 03, 01);
DateTime Day03 = new DateTime(2004, 03, 01);
DateTime Day04 = new DateTime(2004, 04, 01);
TimeSpan Dif01 = Day02.Subtract(Day01);
TimeSpan Dif02 = Day04.Subtract(Day03);

Console.WriteLine("Primer caso: {0} menos {1}", Day02, Day01);
Console.WriteLine("\tDiferencia {0}", Dif01.TotalDays);

Console.WriteLine("Segundo caso: {0} menos {1}", Day04, Day03);
Console.WriteLine("\tDiferencia {0}", Dif02.TotalDays);

La salida de esto da:

Primer caso: 01/03/2004 12:00:00 a.m. menos 01/02/2004 12:00:00 a.m.
Diferencia 29

Segundo caso: 01/04/2004 12:00:00 a.m. menos 01/03/2004 12:00:00 a.m.
Diferencia 31

Pero en meses esto es 1 mes, independientemente de la cantidad de dias, no
importa si es febrero o marzo.

La función de vb.net datediff nos da esa diferencia en forma correcta,
conserva el contexto de calendario y si bien en un caso son 29 días y en el
otro 31, expresado en meses es UN MES.

Esa es la diferencia fundamental entre los dos metodos.

Daniel Calvin
MCP






"SoftJaén" escribió en el mensaje
news:%
"Jose" preguntó:

Existe alguna funcion en vb.net 2003 que muestre los años,meses y dias
transcurridos entre dos fechas?



Otra alternativa a la función «DateDiff» de Visual Basic, es utilizar los
métodos que nos proporciona la estructura «DateTime» del marco de trabajo
de .net, en concreto, el método «Subtract», si tu intención es restar
fechas, el cual te devuelve un objeto «TimeSpan».

Consulta en la ayuda de Visual Basic .net el método «Subtract», donde
encontrarás un ejemplo para restar fechas.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o sugerido en el presente mensaje.

Respuesta Responder a este mensaje
#4 SoftJaén
04/06/2006 - 20:58 | Informe spam
"Daniel A. Calvin" escribió:

Quiero hacer un cometario sobre tu propuesta de utilizar subtract.

El resultado de dicha operación es válido para días. horas, minutos, etc.
Pero no para meses, años



Hola, Daniel:

Llevás razón. La única pega que tiene la estructura TimeSpan es que no
dispone de alguna propiedad que nos indique el total de meses o de años, al
igual que lo hace con el total de días, por lo que si nuestra intención es
obtener el número de meses o de años, o recurrimos a la función de Visual
Basic «DateDiff», o nos buscamos la vida implementando alguna función para
que nos devuelva dichos valores.

Pero también te comento, que la función «DateDiff» pertenece al espacio de
nombres Microsoft.Visual Basic, que entiendo que se encuentra ahí por
compatibilidad con las versiones anteriores del lenguaje, y para facilitarle
el camino a aquellos usuarios que deseen "convertir" a Visual Basic .net sus
aplicaciones desarrolladas con Visual Basic clásico.

Asimismo, también entiendo que si trabajamos con el marco de trabajo de
.net, lo normal es que utilicemos las clases contenidas en el espacio de
nombres System, en la cual se incluye tanto la estructura DateTime como
TimeSpan. Si disponemos de una nueva herramienta de trabajo, y continuamos
trabajando como lo hacíamos en el pasado, digo yo que ¿para qué "leches" se
han inventando los ingenieros de Microsoft el tan polémico .net?

Es como si en lugar de trabajar con ADO .net, continuamos trabajando con la
clásica biblioteca de ADO, que desde luego se puede seguir trabajando con
ella mediante la interoperabilidad COM, pero para seguir como en el pasado,
mejor es que se hubiesen quedado quietecitos, y con haber sacado una nueva
versión de Visual Basic 6.0 (sin ningún .net añadido), nos habrían alegrado
la vida a un montón de gente.

Como dice el refrán, cada cual es libre de hacer de su capa un sayo. Yo,
cuando trabajo con .net, utilizaré las clases del espacio de nombres System,
siempre y cuando me resuelvan el problema; cuando trabaje con Visual Basic
clásico, que ya es bien poco, utilizaré las funciones de Visual Basic
clásico. Pero hacer una mezcla ... no me parece prudente. Por supuesto, es
mi opinión personal. :-)

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#5 Eduardo Alvarado Meza
05/06/2006 - 07:01 | Informe spam
Habria que revisar eso.. de que el espacio de nombres visualbasic solo
existe por compatibilidad, me parece que aparte de la sintaxis, vb es vb por
esa biblioteca, es como la funcion val, no hay otra como esa, le metes un
cadena y arroja cero, le metes 5r y arroja 5, es perfecta.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida