Descobrir o Mês Anterior e Próximo: TDateTime

esta Quick Tips, irei mostra como podemos descobrir qual é o próximo mês, e qual é o mês anterior a partir de uma determinada data.

Olá galera, nesta Quick Tips, irei mostra como podemos descobrir qual é o próximo mês, e qual é o mês anterior a partir de uma determinada data.

 

Vamos então criar uma nova aplicação e salvar seu formulário como uFrmPrincipal.pas, já mude seu nome para FrmPrincipal, e salve o projeto como prjDataMes.dproj.

 

 

Vamos agora adicionar :

1 – Button ( Button1 )

1 – TDateTimePicker (DateTimePicker1)

 

Vamos inicialmente criar duas funções :

 

 

Veja como ficará a declaração das mesmas :

 

unit uFrmPrincipal;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls;

type

   TFrmPrincipal = class(TForm)

   Button1: TButton;

   DateTimePicker1: TDateTimePicker;

   procedure Button1Click(Sender: TObject);

   private

   function Data_Proximo_Mes(xData: TDateTime): Integer;

   function Data_Anterior_Mes(xData: TDateTime): Integer;

   { Private declarations }

   public

   { Public declarations }

   end;

var

FrmPrincipal: TFrmPrincipal;

implementation

{$R *.dfm}

 

Agora vamos implementar as duas funções :

Data_Proximo_Mes

{

Veja nesta função como obter o mês seguinte a partir de uma determinada data.

Parametros de Entrada : xData : TDateTime

Retorno : Integer

}

Function TFrmPrincipal.Data_Proximo_Mes(xData: TDateTime): Integer;

Var

   Year, Month, Day: Word;

   MesAtual : Integer;

   NovMes : Integer;

Begin

   Result := -1;

   Try

   DecodeDate(xData, Year, Month, Day);

   MesAtual := Integer(Month);

   NovMes := ((MesAtual + 12 + 1) mod 12);

   If NovMes = 0 Then NovMes := 12;

   Result := NovMes;

   Except

   Result := -1;

   End;

End;

 

 

Data_Anterior_Mes

 

{

Veja nesta função como obter o mês anterior a partir de uma determinada data.

Parametros de Entrada : xData : TDateTime

Retorno : Integer

}

Function TFrmPrincipal.Data_Anterior_Mes(xData: TDateTime): Integer;

Var

   Year, Month, Day: Word;

   MesAtual : Integer;

   NovMes : Integer;

Begin

   Result := -1;

   Try

   DecodeDate(xData, Year, Month, Day);

   MesAtual := Integer(Month);

   NovMes := ((MesAtual + 24 - 1) mod 12);

   If NovMes = 0 Then NovMes := 12;

   Result := NovMes;

   Except

   Result := -1;

   End;

End;

 

Agora vamos usar as duas funções através do clique do Button1

 

procedure TFrmPrincipal.Button1Click(Sender: TObject);

begin

   ShowMessage(' O próximo mês é : ' +   

IntToStr(Data_Proximo_Mes(DateTimePicker1.DateTime)));

   ShowMessage(' O mês anterior é : ' +

IntToStr(Data_Anterior_Mes(DateTimePicker1.DateTime)));

end;

 

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

 

Um abraço

 

 

Wesley Y

wyamazack@lithic.com.br

Artigos relacionados