Principales respuestas
restar fechas en c#

Pregunta
-
Hola comunidad que tal??
como puedo restar 2 fechas en c# y que me arroje el resultado en meses....
lo estoy para utilzar vencimientos les cuento
por ejemplo si pongo estas fechas
28/02/2009 y las fecha de hoy (18/06/2009) en total me deberia dar 3, xq empiezo a contar asi
1 = 28/03/2009
2= 28/04/2009
3=28/05/2009
el 4 no es porque aun no pasa la fecha de hoy se entiende?
pongo otro ejemplo
pongamos la fecha 06/04/2009 y la fecha de hoy 18/06/2009
1=06/05/2009
2=06/06/2009
se entiende lo que quiero mas o menos? trate con un for y me funciona pero no quiero un for porque tarda mucho..
desde ya muchas gracias!!
.::**~ No Use for A NamE ~**::.
Respuestas
-
Hola Solid...
No hay una manera sencilla ya que la diferencia entre 2 fechas retorna un TimeSpan que no trabaja con meses (ya que es imposible saber la dureción de los meses en un lapso de tiempo arbitrario).
Me parece que la manera más sencilla es una función que vaya sumando de a 1 mes. No será lo más performante, pero es sencilla y para nada lenta:
public static int CalcularMeses(DateTime fechaComienzo, DateTime fechaFin) { fechaComienzo = fechaComienzo.Date; fechaFin = fechaFin.Date; int count = 0; while (fechaComienzo < fechaFin) { fechaComienzo = fechaComienzo.AddMonths(1); count++; } return count; }
La función no está probada... eso va por tu cuenta ;)
Saludos y suerte,
Fernando.
I always try to Keep it Sharp & simple.- Marcado como respuesta Pablokes jueves, 18 de junio de 2009 16:07
Todas las respuestas
-
Hola Solid...
No hay una manera sencilla ya que la diferencia entre 2 fechas retorna un TimeSpan que no trabaja con meses (ya que es imposible saber la dureción de los meses en un lapso de tiempo arbitrario).
Me parece que la manera más sencilla es una función que vaya sumando de a 1 mes. No será lo más performante, pero es sencilla y para nada lenta:
public static int CalcularMeses(DateTime fechaComienzo, DateTime fechaFin) { fechaComienzo = fechaComienzo.Date; fechaFin = fechaFin.Date; int count = 0; while (fechaComienzo < fechaFin) { fechaComienzo = fechaComienzo.AddMonths(1); count++; } return count; }
La función no está probada... eso va por tu cuenta ;)
Saludos y suerte,
Fernando.
I always try to Keep it Sharp & simple.- Marcado como respuesta Pablokes jueves, 18 de junio de 2009 16:07
-
ReferenciaMetodos.CalcularMeses(Convert.ToDateTime(Convert.ToDateTime(myReader["fechaUlt"].ToString()).AddMonths(1)), DateTime.Now.Date);
public static int CalcularMeses(DateTime fechaComienzo, DateTime fechaFin)
{
fechaComienzo = fechaComienzo.Date;
fechaFin = fechaFin.Date;
int count = 0;
while (fechaComienzo < fechaFin)
{
fechaComienzo = fechaComienzo.AddMonths(1);
count++;
}
return count;
}
muy buenooo!! gracias :)!
.::**~ No Use for A NamE ~**::. -
Primero mira este enlace: http://www.irigoni.com.ar/2008/10/restar-fechas-en-c.html
Con lo que alli dice podes obtener la cantidad de dias, luego, haces MOD 30 y te da los meses!
Salu2- Propuesto como respuesta kelnet miércoles, 5 de enero de 2011 16:58
-
HOLA NECESITO DETERMINAR EL RANGO DE FECHAS QUE EXISTE ENTRE UNA FECHA DE INICIO Y UNA FINAL PERO NO TENGO LAS FECHAS SE DESPLIEGEN DENTRO DE UN DATA GRIDVIEW Y COMO LLAMO AL METODO
POR FAVOR AYUDENME SI TIENEN UNA APLICAION PROGRAMADA QUE REALIZA ESTA TAREA POR FAVOR DIGAN ME DONDE LA PUEDO LOCALIZAR AYUDENME
public static int CalcularMeses(DateTime fechaComienzo, DateTime fechaFin)
{
fechaComienzo = fechaComienzo.Date;
fechaFin = fechaFin.Date;
int count = 0;
while (fechaComienzo < fechaFin)
{
fechaComienzo = fechaComienzo.AddMonths(1);
count++;
}
return count;
}