Page 1 of 1

Listado Meses en rango de Periodo

PostPosted: Tue Feb 08, 2022 2:51 pm
by jbrita
Amigo necesito saber cuanto meses hay en un rango de periodo
ejemplo
06/2021 al 02/2022 ... q me estregue esto:

06/2021
07/2021
08/2021
09/2021
10/2021
11/2021
12/2021
01/2022
02/2022

02/2022 al 02/2022 que me entrego esto..

02/2022

saludos

Re: Listado Meses en rango de Periodo

PostPosted: Tue Feb 08, 2022 3:37 pm
by hmpaquito
Facilmente se puede adaptar la siguiente funcion para que salga el formato que necesitas:

Code: Select all  Expand view
///////////////////////////////////////////////////////////////////////////
// Crea una tabla que contiene los meses entre dos fechas divididos entre
// dias, pe. { {02/01/94, 31/01/94}, {01/02/94, 28/02/94} }
// Separa tb. fechas que estan en distintos a¤os
FUNCTION LimFec(dFec1, dFec2)
Local aLimFec:= {}
Local dFecAct, dFecAnt
Local nMes
*
   dFecAct:= dFec1
   dFecAnt:= dFec1
   DO WHILE ( dFecAct < dFec2 ) .AND. ;
            ( ( Month(dFecAct) != Month(dFec2) )  .OR.;
              ( Year(dFecAct) != Year(dFec2)   )     )
      * Pasa a siguiente mes ******************************
      nMes:= Month(dFecAct)
      DO WHILE nMes == Month(dFecAct)
         dFecAct++
      ENDDO
      ******************************************************
      Aadd( aLimFec, {dFecAnt, dFecAct- 1} )
      dFecAnt:= dFecAct
   ENDDO
   Aadd(aLimFec, {dFecAct, dFec2})
*
RETURN aLimFec
*

Re: Listado Meses en rango de Periodo

PostPosted: Wed Feb 09, 2022 4:03 pm
by jbrita
Dejo este codigo si alguno le sirve:

Function Main()

Local nMesI:=4
Local nAnoI:=2021

Local nMesF:=6
Local nAnoF:=2023


Local aPeriodo:={}
Local cFecha1,cFecha2

cFecha1 := CTOD("01/"+strzero( nMesI, 2) + "/" + str( nAnoI ) )
cFecha2 := CTOD("01/"+strzero( nMesF, 2) + "/" + str( nAnoF ) )

DO WHILE ( cFecha1 := CTOD("01/"+strzero( nMesI, 2) + "/" + str( nAnoI ) )) <= cFecha2
? cfecha1
nMesI++
If nMesI >12
nMesI:=1
nAnoI:=nAnoI+1
Endif
EndDo

return nil

Saludos