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
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
//------------------------------------------------------------------------------
* 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)
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
?DaysInMonth(Month(date()))
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
//
hmpaquito wrote:
- Code: Select all Expand view
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
#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
jnavas wrote:FUNCTION FCHFINMES(dFinMes)
dFinMes:=(dFinMes-Day(dFinMes))+35
RETURN dFinMes-Day(dFinMes)
EoM( [<dDate>] ) --> dLastDayOfMonth
//------------------------//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
Armando wrote:Amigos:
Y en xHarbour existe esta otra función
- Code: Select all Expand view
EoM( [<dDate>] ) --> dLastDayOfMonth
Saludos
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 35 guests