FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Calcular Ultimo dia del Mes
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 04:52 PM

Amigos una consulta, si tengo el mes y el a帽o como puedo armar una fecha pero que me ponga e ultimo dia del ese periodo por ejemplo

03-2015 SERIA 31-03-2015
02-2015 SERIA 28-02-2015

eso,gracias

Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Poner dia del Periodo indicado
Posted: Mon Mar 09, 2015 05:00 PM
jbrita wrote:Amigos una consulta, si tengo el mes y el a帽o como puedo armar una fecha pero que me ponga e ultimo dia del ese periodo por ejemplo

03-2015 SERIA 31-03-2015
02-2015 SERIA 28-02-2015

eso,gracias


Ejemplo:

TitRp := "Reporte auxiliar de cuentas " +(F_DMA(,,VAL(SUBS(cMA_Fin,1,2)),.F.,'MA',.T.,VAL(SUBS(cMA_Fin,3,2))))

Code (fw): Select all Collapse
//------------------------------------------------------------------------------
 * FUNCIONES DE FECHAS Y VALIDACION *****
//------------------------------------------------------------------------------
FUNCTION F_DMA(X,Y,FECHAf,FMDAf,FORMAf,ULTDMf,ANOf)
 Local UltD_Mes, UDM, dForm
 Local DIAm := { 'Domingo','Lunes','Martes','Miercoles','Jueves','Viernes',;
                'Sabado' ;
               }
 Local MESm := { 'Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio',;
                'Agosto','Septiembre','Octubre','Noviembre','Diciembre'  ;
               }

 Local DIAn := If( FMDAf = .T.,If( DAY(FECHAf) <=9,'0'+STR(DAY(FECHAf),1 ) ,;
                                                       STR(DAY(FECHAf),2)),.F.)
 Local DIAf := If( FMDAf = .T.,     Dow(FECHAf),.F. )
 Local MESf := If( FMDAf = .T.,   Month(FECHAf),.F. )
 Local ANOn := If( FMDAf = .T.,Str(Year(FECHAf),4),.F. )

 If ULTDMf <> NIL
     ULTD_MES:= ctod('01/'+Str(FECHAf)+'/'+Str(ANOf,4))
     ULTD_MES:= ULTD_MES + 27

     Do While month(ULTD_MES) = FECHAf
         UDM := day(ULTD_MES)
         ++ULTD_MES
     EndDo
 EndIf

 Do Case
    Case FORMAf=='DFMA' // FORMATO: Viernes 01 de Enero de 1999
          * EJ--> F_DMA(10,12,DATE(),.T.,'FMA')      // 01/ENE/99
          dForm := DIAm[DIAf] +' '+ DIAn +' de '+ MESm[MESf] +' de '+ ANOn

    Case FORMAf=='FMA'  // FORMATO: 01/ENE/1999
          * EJ--> F_DMA(10,12,DATE(),.T.,'FMA')      // 01/ENE/99
          dForm := If( MESf>0,DIAn+'/'+UPPER(SUBSTR(MESm[MESf],1,3))+'/'+ANOn,'')

    Case FORMAf=='MES'  // FORMATO: enero
          * EJ--> F_DMA(10,12,MES,.F.,'MES')         // ENERO CON NUMERICO
          * EJ--> F_DMA(10,12,MONTH(FHA),.F.,'MES')  // ENERO CON CTOD()
          * FORMATO: F_DMA(10,12,MES,.F.,'MES',,,'3C')  // ENE EXTRAE 3 CARACTERES
          dForm := lower(MESm[FECHAf])

    Case FORMAf=='MA'   // 31/enero/2001
          * EJ--> F_DMA(,,MES,.F.,'MA',.T.,ANO)
          dForm := Ltrim(STR(UDM))+'/'+MESm[FECHAf]+'/'+Ltrim(Str(ANOf))

    Case FORMAf=='MA2'   // enero 2001
          * EJ--> F_DMA(,,MES,.F.,'MA',.T.,ANO)
          dForm := MESm[FECHAf]+' '+Ltrim(str(ANOf))

    Case FORMAf=='UDMA' // FORMATO: 31 de Enero de 1999.
          * EJ--> F_DMA(,,MES,.F.,'UDMA',.T.,ANO))
          dForm := Ltrim(Str(UDM)) +' de '+ MESm[FECHAf]+' de '+Ltrim(Str(YEAR(ANOf),4))

 EndCase
RETURN (dForm)



Saludos y buen dia Jbrita
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 05:34 PM
Code (fw): Select all Collapse
FUNCTION UltimoDiaMes(nMes, nAno)
Local d
d:= CToD("01/"+ Str(If(nMes == 12, 01, nMes+ 1), 2)+ "/"+ Str(If(nMes == 12, nAno+ 1, nAno), 2)  // Primer dia del mes siguiente
d--  // Dia ultimo del mes anterior
RETURN d
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 05:46 PM
Jbrita

Utiliza 茅sta funci贸n DaysInMonth(nMes) te retorna el 煤ltimo d铆a del mes.
Code (fw): Select all Collapse
?DaysInMonth(Month(date()))


Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 05:58 PM
Hola,

Todos los meses a excepci贸n de febrero tienen una cantidad de d铆as ya definida.
Yo lo hago as铆:

dFecha es una fecha cualquiera. A partir de esa fecha la funci贸n devuelve el 煤ltima d铆a del mes.

Code (fw): Select all Collapse
Function EOM(dFecha)

A:=MONTH(dFecha)

B2:=STRZERO(A,2)
B3:=STRZERO(YEAR(dFecha),4)

DO CASE
聽 聽CASE A = 1
聽 聽 聽 B1:="31"
聽 聽CASE A = 2
聽 聽 聽 FecSig:=CTOD("01/03/"+STRZERO(YEAR(dFecha),4)) - 1
聽 聽 聽 B1:=STRZERO(DAY(FecSig),2)
聽 聽CASE A = 3
聽 聽 聽 B1:="31"
聽 聽CASE A = 4
聽 聽 聽 B1:="30"
聽 聽CASE A = 5
聽 聽 聽 B1:="31"
聽 聽CASE A = 6
聽 聽 聽 B1:="30"
聽 聽CASE A = 7
聽 聽 聽 B1:="31"
聽 聽CASE A = 8
聽 聽 聽 B1:="31"
聽 聽CASE A = 9
聽 聽 聽 B1:="30"
聽 聽CASE A = 10
聽 聽 聽 B1:="31"
聽 聽CASE A = 11
聽 聽 聽 B1:="30"
聽 聽CASE A = 12
聽 聽 聽 B1:="31"
ENDCASE

dFecha:=CTOD(B1+"/"+B2+"/"+B3)

Return dFecha
//


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
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 05:59 PM

FUNCTION FCHFINMES(dFinMes)
dFinMes:=(dFinMes-Day(dFinMes))+35
RETURN dFinMes-Day(dFinMes)

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 06:00 PM
hmpaquito wrote:
Code (fw): Select all Collapse
FUNCTION UltimoDiaMes(nMes, nAno)
Local d
d:= CToD("01/"+ Str(If(nMes == 12, 01, nMes+ 1), 2)+ "/"+ Str(If(nMes == 12, nAno+ 1, nAno), 2) 聽// Primer dia del mes siguiente
d-- 聽// Dia ultimo del mes anterior
RETURN d


Code (fw): Select all Collapse
#include "FiveWin.ch"

FUNCTION Main()

  LOCAL nMes, nAno

  PRIV D

  SET DATE BRITISH
  SET EPOCH TO 1950
  SET CENTURY ON

  nMes := 03
  nAno := 2015

  D := UltimoDiaMes(nMes, nAno)

  ? D  // Retorna: 31/03/2000 ???

RETURN NIL

FUNCTION UltimoDiaMes(nMes, nAno)

   Local d

   d:= CToD("01/"+ Str(If(nMes == 12, 01, nMes+ 1), 2)+ "/"+ Str(If(nMes == 12, nAno+ 1, nAno), 2) )  // Primer dia del mes siguiente
   d--  // Dia ultimo del mes anterior

RETURN d


Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 06:01 PM
jnavas wrote:FUNCTION FCHFINMES(dFinMes)
dFinMes:=(dFinMes-Day(dFinMes))+35
RETURN dFinMes-Day(dFinMes)


FUNCTION FCHINIMES(dIniMes)
dIniMes:= EVAL(oDp:bFecha,dIniMes)
RETURN (dIniMes-Day(dIniMes))+1
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 06:10 PM

No se porque quieren descubrir la p贸lvora si existe la funci贸n: nDia:=DaysInMonth(nMes)

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 07:37 PM
Amigos:

Y en xHarbour existe esta otra funci贸n :-)

Code (fw): Select all Collapse
EoM( [<dDate>] ) --> dLastDayOfMonth


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
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 08:04 PM

Muchisimas Gracias a todos.

Saludos

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 08:25 PM
Hola, llego tarde, pero... por si la quieren usar.
Code (fw): Select all Collapse
//------------------------//Devuelve fecha con ultimo dia del mes-a帽o digitado
Function DiaUltMes(dFecha)
local dUltDia:=dFecha
While month(dUltDia)=month(dFecha) 
   dUltDia+=1
enddo 
Return dUltDia-1

Saludos
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 418
Joined: Wed Nov 26, 2008 06:33 PM
Re: Calcular Ultimo dia del Mes
Posted: Mon Mar 09, 2015 09:30 PM

facil....

// --- Regresa el ultimo dia del mes
function UltimoDia(dFecha,lFecha)
local dFecPiv:=dFecha

default lFecha:=.f.
while month(dFecPiv)==month(dFecha)
dFecPiv++
end
return if(lFecha,dFecPiv-1,day(dFecPiv-1))

No茅 Aburto S谩nchez
Tec. Prog. de Sistemas. -Morelia, Mich. M茅xico.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: Calcular Ultimo dia del Mes
Posted: Tue Mar 10, 2015 12:29 AM
Armando wrote:Amigos:

Y en xHarbour existe esta otra funci贸n :-)

Code (fw): Select all Collapse
EoM( [<dDate>] ) --> dLastDayOfMonth


Saludos


Armando,
Gracias, cuando cree estas funciones no existia harbour, gracias por la informaci贸n. Esta funcion es estandar de harbour?
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Calcular Ultimo dia del Mes
Posted: Tue Mar 10, 2015 01:24 AM

Amigos:

Pues parece que cada uno quiere lucir lo mejor de su c贸digo, pero como dice
Ademar, est谩n descubriendo el agua caliente, :lol:

Juan:
Es funci贸n de xHarbour, a煤n no utilizo Harbour al 100%

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