none
restar fechas en c# RRS feed

  • 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 ~**::.
    jueves, 18 de junio de 2009 15:23

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
    jueves, 18 de junio de 2009 15:32

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
    jueves, 18 de junio de 2009 15:32
  • 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 ~**::.
    jueves, 18 de junio de 2009 16:07
  • 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
    domingo, 21 de febrero de 2010 2:55
  • 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;
            }

    miércoles, 5 de enero de 2011 17:05