Como puedo calcular la cantidad de meses entre dos fechas?,

1,684 views
Skip to first unread message

rjh71

unread,
Oct 12, 2014, 12:36:29 PM10/12/14
to mundovis...@googlegroups.com
Saludos amigos foxeros,
les traigo un problema,
como puedo calcular la cantidad de meses entre dos fechas?,
por favor si me pueden ayudar,
gracias de antemano,
saludos.

Víctor Hugo Espínola Domínguez

unread,
Oct 12, 2014, 2:14:29 PM10/12/14
to mundovis...@googlegroups.com
Hola Rudolf

Adjunto una función que calcula la diferencia en años, meses y días.

Saludos,
Víctor.
Lambaré - Paraguay.



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

DifFechas.prg

HernanCano

unread,
Oct 12, 2014, 10:41:50 PM10/12/14
to mundovis...@googlegroups.com
Hola, colega.

He revisado la alternativa que te da Víctor y funciona muy bien.

Te daré una propuesta, pero debes verla sólo de manera didáctica, pues evidentemente la solución de Víctor tiene mayor "validez".

#define  _CR  chr(13)

ldFecIni = date(2014, 01, 01)
ldFecFin = date()

loDifFec = DifFechas1(m.ldFecIni, m.ldFecFin)

PROCEDURE DifFechas1(M.p1, M.p2)

ldFecIni = M.p2
ldFecFin = M.p1

set century on
local M.OldDate
M.OldDate = set('date')
set date ansi

** Para averiguar cuántos DIAS han transcurrido
M.nDias = (ldFecIni-ldFecFin)
=MessageBox('Desde '+transform(ldFecFin)+' hasta hoy '+transform(ldFecIni)+_CR;
  +'han transcurrido '+transform(M.nDias)+' días.',0,'--')

** Para averiguar cuántos AÑOS han transcurrido
M.nAños = (ldFecIni-ldFecFin)/365
=MessageBox('Desde '+transform(ldFecFin)+' hasta hoy '+transform(ldFecIni)+_CR;
  +'han transcurrido '+transform(M.nAños)+' años.',0,'--')

** Para averiguar cuántos MESES han transcurrido
M.nMeses= (ldFecIni-ldFecFin)/30
=MessageBox('Desde '+transform(ldFecFin)+' hasta hoy '+transform(ldFecIni)+_CR;
  +'han transcurrido '+transform(M.nMeses)+' meses.',0,'--')

set date &OldDate  

**

Chao.
diffechas1.PRG

Rudolf Johann Heiner

unread,
Oct 13, 2014, 12:38:21 AM10/13/14
to mundovis...@googlegroups.com
saludos victor,
gracias por escribir,
mira no me llega el prg,
le puedes poner un guion bajo al final del prg para que lo pueda bajar a mi pc pues,
asi como esta el hotmail no me permite bajarlo,
saludos y gracias,
rudolf.
 
Sent: Sunday, October 12, 2014 8:14 PM
Subject: Re: [Mundo Visual FoxPro] Como puedo calcular la cantidad de meses entre dos fechas?,
 
Hola Rudolf

Adjunto una función que calcula la diferencia en años, meses y días.

Saludos,
Víctor.
Lambaré - Paraguay.

 
El 12 de octubre de 2014, 12:36, rjh71 <rudolf...@hotmail.com> escribió:
Saludos amigos foxeros,
les traigo un problema,
como puedo calcular la cantidad de meses entre dos fechas?,
por favor si me pueden ayudar,
gracias de antemano,
saludos.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:

---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Rudolf Johann Heiner

unread,
Oct 13, 2014, 12:42:59 AM10/13/14
to mundovis...@googlegroups.com
gracias hernan por responder,
estare revisando a ver cual es el que conviene,
gracias,
rudolf.
--

Rudolf Johann Heiner

unread,
Oct 13, 2014, 12:52:53 AM10/13/14
to mundovis...@googlegroups.com
saludos hernan,
mira no me llega el prg,
le puedes poner un guion bajo al final del prg para que lo pueda bajar a mi pc pues,
asi como esta el hotmail no me permite bajarlo,
saludos y gracias,
rudolf.
 
From: HernanCano
Sent: Monday, October 13, 2014 4:41 AM
--

Daniel Manuel López

unread,
Oct 13, 2014, 2:25:40 AM10/13/14
to Zorros verdaeros
meses entre 2 fecha

Meses = Int((Sys(11,Fecha_final)-Sys(11,Fecha_inicial))/30)

saludos

From: rudolf...@hotmail.com
To: mundovis...@googlegroups.com
Subject: Re: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,
Date: Mon, 13 Oct 2014 06:52:50 +0200

Rudolf Johann Heiner

unread,
Oct 13, 2014, 2:46:10 AM10/13/14
to mundovis...@googlegroups.com
saludos daniel,
gracias por contestar,
dime como hago con las fechas,
de que tipo tienen que ser,
pues estuve haciendo pruebas con date(),
y me vota error,
quedo de ti,
saludos,
rudolf.

Rudolf Johann Heiner

unread,
Oct 13, 2014, 3:05:38 AM10/13/14
to mundovis...@googlegroups.com
hola daniel,
estoy probando con esto,
pero me vota data type mistmatch,
? Int((Sys(11,'01/03/2014')-Sys(11,'01/01/2014'))/30),
quedo de ti,
saludos,
rudolf.
Sent: Monday, October 13, 2014 8:25 AM

Rudolf Johann Heiner

unread,
Oct 13, 2014, 3:24:45 AM10/13/14
to mundovis...@googlegroups.com
hola daniel,
ya se que es el error,
la solucion final es: ? Int((VAL(Sys(11,'06/10/2013')-Sys(11,DATE())))/30)
pero me sale con que no es lo que quiero el resultado es 818818081898
y no es 1 como debe ser,
quedo de ti,
rudolf.

Víctor Hugo Espínola Domínguez

unread,
Oct 13, 2014, 10:06:07 AM10/13/14
to mundovis...@googlegroups.com
Hola Rudolf

Ahí va.

Saludos,
Víctor.
Lambaré - Paraguay.

DifFechas._prg_

Rudolf Johann Heiner

unread,
Oct 13, 2014, 10:31:04 AM10/13/14
to mundovis...@googlegroups.com
gracias victor,
saludos,

Daniel Manuel López

unread,
Oct 13, 2014, 11:57:24 AM10/13/14
to Zorros verdaeros
Listo, ya esta probado con tus fechas.

SET date DMY
? int(val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/01/2014')))+1)/30

comenta como queda
saludos




From: rudolf...@hotmail.com
To: mundovis...@googlegroups.com
Subject: Re: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,
Date: Mon, 13 Oct 2014 09:24:39 +0200

Daniel Manuel López

unread,
Oct 13, 2014, 12:12:57 PM10/13/14
to Zorros verdaeros
Ahora si...

SET date DMY
? INT((val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/01/2014')))+1)/30)




Subject: RE: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,
Date: Mon, 13 Oct 2014 10:57:21 -0500

HernanCano

unread,
Oct 13, 2014, 6:35:13 PM10/13/14
to mundovis...@googlegroups.com
????

Copia y pega del texto.......

HernanCano

unread,
Oct 13, 2014, 7:05:23 PM10/13/14
to mundovis...@googlegroups.com
Oye, neme:

((hoy lunes-13-octubre-2014))

Tu propuesta me entrega: 9.5333 meses. Un decimal superior a 5 implica más de 15 días, ¿entiendes? Inexacto.

Con la alternativa de Víctor, obtenemos: 9 meses, 12 días (diferencia entre fechas). Aceptado!!

Mi indicación (DATE()-date(2014,01,01))/30 da 9.5 meses, pero recuerda que dije que es didáctica.

Me gustaría saber de qué manera (didácticamente) me ayuda o me sirve convertir a números julianos.....


El lunes, 13 de octubre de 2014 11:12:57 UTC-5, neme escribió:
Ahora si...

SET date DMY
? INT((val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/01/2014')))+1)/30)




From: neme

Daniel Manuel López

unread,
Oct 13, 2014, 8:46:03 PM10/13/14
to Zorros verdaeros
Saludos Hernán,

Si ejecutaste el último post el resultado es 2 exacto por el INT.

No lo había probado, pero en mi último post ya va bien.
corre las siguientes dos lineas y te arrojara los los resultados deseados, 
copialas y correlas en la linea de comandos

SET date DMY
? INT((val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/01/2014')))+1)/30)

saludos

Date: Mon, 13 Oct 2014 16:05:23 -0700
From: jherna...@gmail.com
To: mundovis...@googlegroups.com
Subject: Re: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,

Daniel Manuel López

unread,
Oct 13, 2014, 8:54:46 PM10/13/14
to Zorros verdaeros
Disculpa Hernan pero no te respondí tu pregunta:

El convertir en días julianos te da la exactitud para poder hacer o determinar 
los dias exactos entre fechas... personalmente me es más fácil hacerlo de esta
forma en todas mis operaciones de inventario, vencimientos, y es muy exacto
porque no tienes que hacer otras operaciones para determinarlo...

prueba lo que te escribi... y compruebalo


Subject: RE: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,
Date: Mon, 13 Oct 2014 19:46:01 -0500

Víctor Hugo Espínola Domínguez

unread,
Oct 13, 2014, 9:11:58 PM10/13/14
to mundovis...@googlegroups.com
Hola Daniel Manuel


>El convertir en días julianos te da la exactitud para poder hacer o determinar 
>los dias exactos entre fechas...

Compara los resultados de estas expresiones:

? val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/01/2014')))+1

? DATE(2014, 3, 1) - DATE(2014, 1, 1) + 1

Saludos,
Víctor.
Lambaré - Paraguay.

edgar suarez kummers

unread,
Oct 13, 2014, 9:33:11 PM10/13/14
to mundovisualfoxpro

El 13 de octubre de 2014, 20:11, Víctor Hugo Espínola Domínguez <vich...@gmail.com> escribió:
? DATE(2014, 3, 1) - DATE(2014, 1, 1) + 1

¿ Julius caesar putant schola non peritus ?
 
et nihil discrevit inter LX  et   III

Víctor Hugo Espínola Domínguez

unread,
Oct 13, 2014, 9:33:22 PM10/13/14
to mundovis...@googlegroups.com
Hola Daniel Manuel

Siguiendo con el tema, prueba esto:

? INT((val(Sys(11,CTOD('01/03/2014')))-val(Sys(11,CTOD('01/02/2014')))+1)/30)

Saludos,
Víctor.
Lambaré - Paraguay.

Víctor Hugo Espínola Domínguez

unread,
Oct 13, 2014, 9:47:35 PM10/13/14
to mundovis...@googlegroups.com
Hola Daniel Manuel

Si deseas la parte entera de la diferencia en meses entre dos fechas:

? (YEAR(dFec1) - YEAR(dFec2)) * 12 + MONTH(dFec1) - MONTH(dFec2) - IIF(DAY(dFec1) < DAY(dFec2), 1, 0)

Saludos,
Víctor.
Lambaré - Paraguay.


Daniel Manuel López

unread,
Oct 13, 2014, 10:30:41 PM10/13/14
to Zorros verdaeros
Hola Victor Hugo,

Hice algunas pruebas con diferentes fechas con

        ? DATE(2014, 3, 1) - DATE(2014, 1, 1) + 1

y efectivamente sale bien el resultado en días, reconozco que no lo había
probado nunca de esa forma y me parece muy bien.

Por otro lado la instrucción para sacar los meses enteros

? (YEAR(dFec1) - YEAR(dFec2)) * 12 + MONTH(dFec1) - MONTH(dFec2) - IIF(DAY(dFec1) < DAY(dFec2), 1, 0)

siento que esta muy complicada, pudiendo ser mas simple así:

        ? INT((DATE(2014, 3, 1) - DATE(2014, 1, 1) + 1)/30)

Ahora, como se los indique que yo utilizo la conversión a fechas julianas es por lo siguiente:

Muchas empresas en México pagan sus deudas un día determinado a la semana, ejem. los miércoles
y créditos a 15 días. bien, si el vencimiento cae en lunes entonces se recorre 2 días para que coincida
con el miércoles, y teniéndolo en fechas julianas puedo adicionar o restar los días necesarios para
hacer mis cálculos correctos y luego convertir los días juliano resultantes a una fecha nueva...

En fin, diario se aprende algo nuevo y hoy me toco, te agradezco tu gentileza y voy a ver como
aplicar esto.

Saludos




Date: Mon, 13 Oct 2014 21:47:34 -0400

Subject: Re: [Mundo Visual FoxPro] Re: Como puedo calcular la cantidad de meses entre dos fechas?,

Víctor Hugo Espínola Domínguez

unread,
Oct 13, 2014, 11:21:04 PM10/13/14
to mundovis...@googlegroups.com
Hola Daniel Manuel


>siento que esta muy complicada, pudiendo ser mas simple así:

>        ? INT((DATE(2014, 3, 1) - DATE(2014, 1, 1) + 1)/30)

Esta fórmula falla en el siguiente caso:

? INT((DATE(2014, 3, 1) - DATE(2014, 2, 1) + 1)/30)

En cuanto a sumar o restar días a fechas no es necesario convertirlas a julianas.

? Date() + 2
? Date(2014, 1, 1) - 7        && Merry Christmas
 
Saludos,
Víctor.
Lambaré - Paraguay.


Reply all
Reply to author
Forward
0 new messages