necesito que me saquen una duda

necesito que me saquen una duda

Postby goosfancito » Wed Aug 25, 2021 11:03 am

Fecha de inicio (DD/MM/AAAA): 29/01/1905
Fecha final (DD/MM/AAAA): 02/10/1926
Cantidad de años: 20

esto es asi?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: necesito que me saquen una duda

Postby acuellar » Wed Aug 25, 2021 12:02 pm

goosfancito

No es así
Es 21
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1594
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: necesito que me saquen una duda

Postby karinha » Wed Aug 25, 2021 12:10 pm

Code: Select all  Expand view

// \samples\somadat.prg

#Include "FiveWin.ch"

FUNCTION Main()

   /*
   Fecha de inicio (DD/MM/AAAA): 29/01/1905
   Fecha final (DD/MM/AAAA): 02/10/1926
   Cantidad de años: 20

   esto es asi?
   */


   LOCAL FechaIni, FechaFin, nSumaFecha

   SET CENTURY ON
   SET DATE BRITISH
   SET EPOCH TO YEAR( DATE() ) - 30

   FechaIni   := CTOD( "29/01/1905" )
   FechaFin   := CTOD( "02/01/1926" )
   nSumaFecha := 0

   nSumaFecha := Converte_Edad( FechaIni, FechaFin )

   ? nSumaFecha

RETURN NIL

FUNCTION Converte_Edad( FechaIni, FechaFin )

    LOCAL Calc_Edad

    Calc_Edad := 0.00

    Calc_Edad := INT( ( FechaFin - FechaIni ) ) / 365

RETURN( Calc_Edad )

// fin / end
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: necesito que me saquen una duda

Postby karinha » Wed Aug 25, 2021 1:31 pm

acuellar wrote:goosfancito

No es así
Es 21


Adhemar, porquê? No és 20 años, 9 meces y cuatro dias? +- eso. jajajajajajaja.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: necesito que me saquen una duda

Postby goosfancito » Wed Aug 25, 2021 2:08 pm

por eso mismo tengo la duda, para mi es como dice Karinha.

pueden verificarlo?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: necesito que me saquen una duda

Postby goosfancito » Sun Sep 05, 2021 8:54 pm

karinha wrote:
acuellar wrote:goosfancito

No es así
Es 21


Adhemar, porquê? No és 20 años, 9 meces y cuatro dias? +- eso. jajajajajajaja.

Saludos.



da 21
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: necesito que me saquen una duda

Postby jrestojeda » Mon Sep 06, 2021 2:52 am

Hola,
Una forma muy poco ortodoxa si es que usas MySql podes preguntarselo al servidor.

Code: Select all  Expand view
SELECT TIMESTAMPDIFF(YEAR, '1905-01-29','1926-10-02') AS ANIOS // Candidad de años -> Resultado 21
SELECT TIMESTAMPDIFF(MONTH, '1905-01-29','1926-10-02') AS MESES // Cantidad de meses -> Resultado 260
SELECT TIMESTAMPDIFF(DAY, '1905-01-29','1926-10-02') AS DIAS // Cantidad de días -> Resultado 7916
 


Espero te sirva la idea.
Saludos,
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: necesito que me saquen una duda

Postby karinha » Mon Sep 06, 2021 2:10 pm

No estoy de acuerdo con tu lógica y vuelvo a intentarlo: 20 años, once meses y 5 días. 21 años, solo en: 29/01/1926.

Code: Select all  Expand view

// \samples\IDADE.PRG

// função que retorna o tempo de vida, ou tempo de cadastro, etc, no formato
// ano:mes:dia

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL Edade, Dt_Nasc, FechaIni, FechaFin

   SET CENTURY ON
   SET DATE BRITISH
   SET EPOCH TO YEAR( DATE() ) - 30

   Dt_Nasc    := CTOD( "08/08/1963" )
   FechaIni   := CTOD( "29/01/1905" )
   FechaFin   := CTOD( "02/01/1926" )

   // Edade := _Tempo( Dt_Nasc, Date() )
   Edade := _Tempo( FechaIni, FechaFin )

   ? Edade // -> 20 anos, once meces y 5 dias. aun no es 21 anos.
           // -> En: "29/01/1926" -> completara 21 anos. Perfecto?

RETURN NIL

FUNCTION _TEMPO( AA, BB )

   LOCAL D, M, A, DD, LA, LM, DD1, HH

   STORE 0 TO A, M, D

   IF ( Year( BB ) - Year( AA ) ) > 1 .OR. ( ( BB - AA ) + 1 ) > 364

      DD := CToD( Left( DToC( AA ), 6 ) + Right( DToC( BB ), 4 ) )

      IF DToS( DD ) > DToS( BB )

         DD := CToD( Left( DToC( DD ), 6 ) + StrZero( Val( Right( DToC( DD ), 4 ) ) - 1, 4 ) )

      ENDIF

      A := Year( DD ) - Year( AA )

      IF Year( DD ) = Year( BB ) .AND. ( Month( BB ) - Month( DD ) ) > 1

         M := ( Month( BB ) - Month( DD ) ) - 1

      ELSEIF Year( BB ) > Year( DD )

         M := ( 12 - Month( DD ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( DD )

      LM := Month( DD ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( DD ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ELSE

      A := 0

      IF Year( AA ) = Year( BB ) .AND. ( Month( BB ) - Month( AA ) ) > 1

         M := ( Month( BB ) - Month( AA ) ) - 1

      ELSEIF Year( BB ) > Year( AA )

         M := ( 12 - Month( AA ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( AA )

      LM := Month( AA ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( AA ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ENDIF

   HH := Str( A, 3 ) + ":" + Str( M, 2 ) + ":" + Str( D, 2 )

RETURN( HH )
// FIN
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: necesito que me saquen una duda

Postby jrestojeda » Mon Sep 06, 2021 2:14 pm

karinha
El tema es que en la pregunta original, dice 29/10/1926 (Noviembre) en tu función estás poniendo Enero. :mrgreen:
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: necesito que me saquen una duda

Postby karinha » Mon Sep 06, 2021 2:36 pm

És verdad. 1000 desculpas. jajajajajajajaja.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: necesito que me saquen una duda

Postby goosfancito » Mon Sep 06, 2021 6:03 pm

karinha wrote:No estoy de acuerdo con tu lógica y vuelvo a intentarlo: 20 años, once meses y 5 días. 21 años, solo en: 29/01/1926.

Code: Select all  Expand view

// \samples\IDADE.PRG

// função que retorna o tempo de vida, ou tempo de cadastro, etc, no formato
// ano:mes:dia

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL Edade, Dt_Nasc, FechaIni, FechaFin

   SET CENTURY ON
   SET DATE BRITISH
   SET EPOCH TO YEAR( DATE() ) - 30

   Dt_Nasc    := CTOD( "08/08/1963" )
   FechaIni   := CTOD( "29/01/1905" )
   FechaFin   := CTOD( "02/01/1926" )

   // Edade := _Tempo( Dt_Nasc, Date() )
   Edade := _Tempo( FechaIni, FechaFin )

   ? Edade // -> 20 anos, once meces y 5 dias. aun no es 21 anos.
           // -> En: "29/01/1926" -> completara 21 anos. Perfecto?

RETURN NIL

FUNCTION _TEMPO( AA, BB )

   LOCAL D, M, A, DD, LA, LM, DD1, HH

   STORE 0 TO A, M, D

   IF ( Year( BB ) - Year( AA ) ) > 1 .OR. ( ( BB - AA ) + 1 ) > 364

      DD := CToD( Left( DToC( AA ), 6 ) + Right( DToC( BB ), 4 ) )

      IF DToS( DD ) > DToS( BB )

         DD := CToD( Left( DToC( DD ), 6 ) + StrZero( Val( Right( DToC( DD ), 4 ) ) - 1, 4 ) )

      ENDIF

      A := Year( DD ) - Year( AA )

      IF Year( DD ) = Year( BB ) .AND. ( Month( BB ) - Month( DD ) ) > 1

         M := ( Month( BB ) - Month( DD ) ) - 1

      ELSEIF Year( BB ) > Year( DD )

         M := ( 12 - Month( DD ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( DD )

      LM := Month( DD ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( DD ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ELSE

      A := 0

      IF Year( AA ) = Year( BB ) .AND. ( Month( BB ) - Month( AA ) ) > 1

         M := ( Month( BB ) - Month( AA ) ) - 1

      ELSEIF Year( BB ) > Year( AA )

         M := ( 12 - Month( AA ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( AA )

      LM := Month( AA ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( AA ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ENDIF

   HH := Str( A, 3 ) + ":" + Str( M, 2 ) + ":" + Str( D, 2 )

RETURN( HH )
// FIN
 


Regards, saludos.


Kari,
Es que nacio en enero de 29/01/1905 y a octubre de 1926 se cumple entonces 21 años. o sea, el 29/1/1926 cumplio los 21 años
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: necesito que me saquen una duda

Postby karinha » Mon Sep 06, 2021 10:01 pm

goosfancito wrote:
karinha wrote:No estoy de acuerdo con tu lógica y vuelvo a intentarlo: 20 años, once meses y 5 días. 21 años, solo en: 29/01/1926.

Code: Select all  Expand view

// \samples\IDADE.PRG

// função que retorna o tempo de vida, ou tempo de cadastro, etc, no formato
// ano:mes:dia

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL Edade, Dt_Nasc, FechaIni, FechaFin

   SET CENTURY ON
   SET DATE BRITISH
   SET EPOCH TO YEAR( DATE() ) - 30

   Dt_Nasc    := CTOD( "08/08/1963" )
   FechaIni   := CTOD( "29/01/1905" )
   FechaFin   := CTOD( "02/01/1926" )

   // Edade := _Tempo( Dt_Nasc, Date() )
   Edade := _Tempo( FechaIni, FechaFin )

   ? Edade // -> 20 anos, once meces y 5 dias. aun no es 21 anos.
           // -> En: "29/01/1926" -> completara 21 anos. Perfecto?

RETURN NIL

FUNCTION _TEMPO( AA, BB )

   LOCAL D, M, A, DD, LA, LM, DD1, HH

   STORE 0 TO A, M, D

   IF ( Year( BB ) - Year( AA ) ) > 1 .OR. ( ( BB - AA ) + 1 ) > 364

      DD := CToD( Left( DToC( AA ), 6 ) + Right( DToC( BB ), 4 ) )

      IF DToS( DD ) > DToS( BB )

         DD := CToD( Left( DToC( DD ), 6 ) + StrZero( Val( Right( DToC( DD ), 4 ) ) - 1, 4 ) )

      ENDIF

      A := Year( DD ) - Year( AA )

      IF Year( DD ) = Year( BB ) .AND. ( Month( BB ) - Month( DD ) ) > 1

         M := ( Month( BB ) - Month( DD ) ) - 1

      ELSEIF Year( BB ) > Year( DD )

         M := ( 12 - Month( DD ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( DD )

      LM := Month( DD ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( DD ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ELSE

      A := 0

      IF Year( AA ) = Year( BB ) .AND. ( Month( BB ) - Month( AA ) ) > 1

         M := ( Month( BB ) - Month( AA ) ) - 1

      ELSEIF Year( BB ) > Year( AA )

         M := ( 12 - Month( AA ) ) + Month( BB ) - 1

      ENDIF

      LA := Year( AA )

      LM := Month( AA ) + 1

      IF LM > 12

         LM := 1

         LA := LA + 1

      ENDIF

      DD1 := CToD( "01/" + StrZero( LM, 2 ) + "/" + StrZero( LA, 4 ) ) - 1

      D := Day( BB ) + ( Day( DD1 ) - Day( AA ) ) + 1

      IF D >= 30

         LA := Int( D / 30 )

         D := D - ( LA * 30 )

         M := M + 1

         IF M > 12

            M := 0

            A := A + 1

         ENDIF

      ENDIF

   ENDIF

   HH := Str( A, 3 ) + ":" + Str( M, 2 ) + ":" + Str( D, 2 )

RETURN( HH )
// FIN
 


Regards, saludos.


Kari,
Es que nacio en enero de 29/01/1905 y a octubre de 1926 se cumple entonces 21 años. o sea, el 29/1/1926 cumplio los 21 años


Es que nacio en enero de 29/01/1905 y a octubre de 1926 se cumple entonces 21 años. o sea, el 29/1/1926 cumplio los 21 años, aqui el error: el correcto és: 29/10/1926.

jajajajajaja, Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: necesito que me saquen una duda

Postby JoseAlvarez » Tue Sep 07, 2021 6:43 pm

Hola a Todos...
Yo lo hago asi

Code: Select all  Expand view
    local dFechaA, dFechaB, nYears, nMeses, nDias

    dFechaA := cTod('29/01/1905')
    dFechaB := cTod('02/10/1926')

    nYears := (dFechaB-dFechaA)/365
    nMeses := nYears-Int(nYears)
    nMeses := nMeses*12
    nDias  := nMeses-Int(nMeses)
    nDias  := nDias*30

    nYears := Int(nYears)
    nMeses := Int(nMeses)
    nDias  := Int(nDias)

    msginfo(nYears)
    msginfo(nMeses)
    msginfo(nDias)
 
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 738
Joined: Sun Nov 09, 2014 5:01 pm

Re: necesito que me saquen una duda

Postby Armando » Tue Sep 07, 2021 7:30 pm

José:

Disculpa mi intromisión, y los años bisiestos?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3076
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: necesito que me saquen una duda

Postby JoseAlvarez » Tue Sep 07, 2021 8:45 pm

Armando wrote:José:

Disculpa mi intromisión, y los años bisiestos?

Saludos


Hola armando.
Todo parte del calculo de los dias exactos transcurridos entre las dos fechas.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 738
Joined: Sun Nov 09, 2014 5:01 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests