Calcular Ultimo dia del Mes

Calcular Ultimo dia del Mes

Postby jbrita » Mon Mar 09, 2015 4: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
Last edited by jbrita on Mon Mar 09, 2015 5:21 pm, edited 1 time in total.
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: Poner dia del Periodo indicado

Postby ACC69 » Mon Mar 09, 2015 5: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: Select all  Expand view
//------------------------------------------------------------------------------
 * 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
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Calcular Ultimo dia del Mes

Postby hmpaquito » Mon Mar 09, 2015 5:34 pm

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
 
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Calcular Ultimo dia del Mes

Postby acuellar » Mon Mar 09, 2015 5:46 pm

Jbrita

Utiliza ésta función DaysInMonth(nMes) te retorna el último día del mes.
Code: Select all  Expand view

?DaysInMonth(Month(date()))
 


Saludos,

Adhemar
Saludos,

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

Re: Calcular Ultimo dia del Mes

Postby jrestojeda » Mon Mar 09, 2015 5: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: Select all  Expand view
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
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Calcular Ultimo dia del Mes

Postby jnavas » Mon Mar 09, 2015 5:59 pm

FUNCTION FCHFINMES(dFinMes)
dFinMes:=(dFinMes-Day(dFinMes))+35
RETURN dFinMes-Day(dFinMes)
User avatar
jnavas
 
Posts: 473
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Calcular Ultimo dia del Mes

Postby karinha » Mon Mar 09, 2015 6:00 pm

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
 


Code: Select all  Expand view

#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
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Calcular Ultimo dia del Mes

Postby jnavas » Mon Mar 09, 2015 6: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
User avatar
jnavas
 
Posts: 473
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Calcular Ultimo dia del Mes

Postby acuellar » Mon Mar 09, 2015 6:10 pm

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

Saludos,

Adhemar
Saludos,

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

Re: Calcular Ultimo dia del Mes

Postby Armando » Mon Mar 09, 2015 7:37 pm

Amigos:

Y en xHarbour existe esta otra función :)

Code: Select all  Expand view

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
User avatar
Armando
 
Posts: 3076
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Calcular Ultimo dia del Mes

Postby jbrita » Mon Mar 09, 2015 8:04 pm

Muchisimas Gracias a todos.

Saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: Calcular Ultimo dia del Mes

Postby FranciscoA » Mon Mar 09, 2015 8:25 pm

Hola, llego tarde, pero... por si la quieren usar.
Code: Select all  Expand view
//------------------------//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
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Calcular Ultimo dia del Mes

Postby noe aburto » Mon Mar 09, 2015 9: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
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Calcular Ultimo dia del Mes

Postby jnavas » Tue Mar 10, 2015 12:29 am

Armando wrote:Amigos:

Y en xHarbour existe esta otra función :)

Code: Select all  Expand view

EoM( [<dDate>] ) --> dLastDayOfMonth
 


Saludos


Armando,
Gracias, cuando cree estas funciones no existia harbour, gracias por la información. Esta funcion es estandar de harbour?
User avatar
jnavas
 
Posts: 473
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Calcular Ultimo dia del Mes

Postby Armando » Tue Mar 10, 2015 1: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
User avatar
Armando
 
Posts: 3076
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 25 guests