Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Restar Meses (https://www.clubdelphi.com/foros/showthread.php?t=85430)

Neeruu 15-03-2014 22:38:32

Restar Meses
 
Hola a todos!!!

Estoy enredado con una función que necesito que me devuelva una fecha a partir de hoy pero restando le la X cantidad de meses...

O sea:

Código Delphi [-]
Function RestaMeses(iCantMeses:Integer): Date;
begin
Result := FechaActual - iCantMeses;
end;

Tengo que tener en cuenta que si a la función le paso 24 meses, me tiene que devolver la fecha de hoy pero de 2 años atrás...

Hay alguna función que haga esto? alguna idea de como puedo hacerlo... estoy trancado... la verdad que no le encuentro la vuelta...

Saluda Atte Neeruu!!!:)

Caminante 15-03-2014 23:11:53

Ya probaste con la funcion IncMonth de la unidad Dateutils???

Saludos

nlsgarcia 16-03-2014 21:21:59

Neeruu,

Cita:

Empezado por Neeruu
...una función que necesito que me devuelva una fecha a partir de hoy pero restando...X cantidad de meses...

Revisa este link:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Edit1: TEdit;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure OnKeyDown(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   ComboBox1.Items.Add('Suma Meses');
   ComboBox1.Items.Add('Resta Meses');
   ComboBox1.Text := ComboBox1.Items.Strings[1];
end;

procedure TForm1.OnKeyDown(Sender: TObject; var Key: Char);
begin
   if not (Key in ['0'..'9',#8]) then
      Key := #0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   DeltaMonth : Integer;

begin

   // Variación de Meses a aplicar a una Fecha
   DeltaMonth := StrToInt(Edit1.Text);

   // Suma n Meses a una Fecha
   if ComboBox1.Text = 'Suma Meses' then
      DateTimePicker2.DateTime := IncMonth(DateTimePicker1.DateTime, DeltaMonth);

   // Resta n Meses a una Fecha
   if ComboBox1.Text = 'Resta Meses' then
      DateTimePicker2.DateTime := IncMonth(DateTimePicker1.DateTime, -DeltaMonth);

end;

end.
El código anterior permite sumar o restar n meses a una fecha determinada en un control TDateTimePicker y colocar el resultado en otro control TDateTimePicker.

Te sugiero revisar esta información:
Espero sea útil :)

Nelson.

Neeruu 17-03-2014 14:35:22

Gracias por las respuestas, voy a probar con el IncMonth, no se me había ocurrido probarlo en negativo!!!


La franja horaria es GMT +2. Ahora son las 12:08:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi