Divisão de Datas
Galera se puderem me ajudar.
Eu preciso dividir uma data em dia, mês e Ano, pra podere fazer um form trabalhar com uma troca de data (01/12/2004) para Dia (01), Mes e Ano (12/2004) e vice-versa. :lol:
Eu preciso dividir uma data em dia, mês e Ano, pra podere fazer um form trabalhar com uma troca de data (01/12/2004) para Dia (01), Mes e Ano (12/2004) e vice-versa. :lol:
Zunker
Curtidas 0
Respostas
Lucas Silva
31/05/2004
Usa o comando [b:1b5a5ee6f1]decodeDate[/b:1b5a5ee6f1]
GOSTEI 0
Jrjoliv2003
31/05/2004
Vc está querendo desmembrar a data?
Se for isso utilize o comando copy. Ele copia partes de uma string.
Por exemplo:
se vc digitou 31/05/2004 em um edit, para ter cada parte faça:
dia:=StrToInt(Copy(edit1.text,1,2)); copia os 2 primeiros dígitos;
mes:=StrToInt(Copy(edit1.text,4,2)); copia o 3º e 4º dígitos;
ano:=StrToInt(Copy(edit1.text,6,4)); copia o 6º, 7º, 8º e 9º dígitos;
como os valores são inteiros vc pode incrementar decrementar etc.
espero ter ajudado!!!!
Se for isso utilize o comando copy. Ele copia partes de uma string.
Por exemplo:
se vc digitou 31/05/2004 em um edit, para ter cada parte faça:
dia:=StrToInt(Copy(edit1.text,1,2)); copia os 2 primeiros dígitos;
mes:=StrToInt(Copy(edit1.text,4,2)); copia o 3º e 4º dígitos;
ano:=StrToInt(Copy(edit1.text,6,4)); copia o 6º, 7º, 8º e 9º dígitos;
como os valores são inteiros vc pode incrementar decrementar etc.
espero ter ajudado!!!!
GOSTEI 0
Pedro Bugim
31/05/2004
Colega,
vc terá q usar a funão copy, para retirar pedaços da data.
Primeiro crie 3 variáveis, onde alocará os devidos pedaços. Vou considerar como se a data estivesse em um edit chamado EdtData e que a mesma seja 20/11/1998, ok?!
Lá vai um exemplo:
Desta forma, as variáveis tomarão como valor as strings ´20´, ´11´ e ´1998´ respectivamente.
Repare que o copy trabalha da seguinte forma: indica-se como parâmetro, o edit a ser trabalhado, a posião do primeiro caracter a ser copiado e finalmente, a quantidade de caracteres que serão copiados. Ok?!
Espero ter ajudado!
Abraços,
Pedro Bugim
vc terá q usar a funão copy, para retirar pedaços da data.
Primeiro crie 3 variáveis, onde alocará os devidos pedaços. Vou considerar como se a data estivesse em um edit chamado EdtData e que a mesma seja 20/11/1998, ok?!
Lá vai um exemplo:
Var dia, mes, ano : String; Begin Dia := Copy(EdtData.text, 1, 2); Mes := Copy(EdtData.text, 4, 2); Ano := Copy(EdtData.text, 7, 4); end;
Desta forma, as variáveis tomarão como valor as strings ´20´, ´11´ e ´1998´ respectivamente.
Repare que o copy trabalha da seguinte forma: indica-se como parâmetro, o edit a ser trabalhado, a posião do primeiro caracter a ser copiado e finalmente, a quantidade de caracteres que serão copiados. Ok?!
Espero ter ajudado!
Abraços,
Pedro Bugim
GOSTEI 0
Lucas Silva
31/05/2004
procedure TForm1.Button1Click(Sender: TObject); var ano, mes, dia: word; begin DecodeDate(StrToDate(Edit1.Text),ano,mes,dia); end;
GOSTEI 0
Zunker
31/05/2004
vlw pessoal
GOSTEI 0
Ilanocf
31/05/2004
Veja se isso pode ajudá-lo:
[b:192e7bc67b]Idade[/b:192e7bc67b]
// Programador - Paulo Alexsandro Freitas de Miranda <- The Programmer ->
// dprogrammer@ieg.com.br
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Mask;
type
TForm1 = class(TForm)
meNasc: TMaskEdit;
Label1: TLabel;
SpeedButton1: TSpeedButton;
edIdade: TEdit;
Label2: TLabel;
BitBtn1: TBitBtn;
Label3: TLabel;
edDias: TEdit;
function Bissexto(AYear: Integer): Boolean;
function DiasDoMes(AYear, AMonth: Integer): Integer;
function Idade2(DataNasc : TDate) : String;
function Dias(Data : TDate) : String;
function Idade(Nasc : TDate) : String;
procedure SpeedButton1Click(Sender: TObject);
procedure meNascKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.Bissexto(AYear: Integer): Boolean;
begin
Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;
function TForm1.DiasDoMes(AYear, AMonth: Integer): Integer;
const
DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
Result := DaysInMonth[AMonth];
if (AMonth = 2) and Bissexto(AYear) then Inc(Result);
end;
function TForm1.Idade2(DataNasc : TDate) : String;
Var Ano1, Mes1, Dia1 : Word;
Ano2, Mes2, Dia2 : Word;
Ano, Mes, Dia : Word;
Idade : String;
AuxDia1, AuxDia2 : Integer;
begin
Idade := ´´;
DecodeDate(DataNasc, Ano1, Mes1, Dia1);
DecodeDate(Date, Ano2, Mes2, Dia2);
AuxDia1 := Dia1;
AuxDia2 := Dia2;
if (Dia1 > Dia2) And ((Mes2 - Mes1) = 1) then begin
Dia2 := Dia2 + DiasDoMes(Ano1, Mes1);
Mes1 := Mes2;
end else if (Dia1 > Dia2) And (Mes1 <> Mes2) then begin
Dia2 := Dia2 + DiasDoMes(Ano1, Mes1);
end else if (Mes1 = Mes2) And (Dia1 > Dia2) And (Ano1 <> Ano2) then begin
Dia2 := Dia2 + DiasDoMes(Ano1, Mes1);
Mes2 := Mes2 + 11;
Ano1 := Ano1 + 1;
end;
if (Mes1 > Mes2) And (AuxDia1 <= AuxDia2) then begin
Ano1 := Ano1 + 1;
Mes2 := Mes2 + 12;
end else if (Mes1 > Mes2) And (AuxDia1 > AuxDia2) then begin
Ano1 := Ano1 + 1;
Mes2 := Mes2 + 11;
end;
Ano := Ano2 - Ano1;
Mes := Mes2 - Mes1;
Dia := Dia2 - Dia1;
if Ano > 1 then
Idade := IntToStr(Ano) + ´ Anos´
else if Ano = 1 then
Idade := IntToStr(Ano) + ´ Ano´;
if Mes > 1 then
Idade := Idade + ´, ´ + IntToStr(Mes) + ´ Meses ´
else if Mes <> 0 then
Idade := Idade + ´, ´ + IntToStr(Mes) + ´ Mês ´;
If Ano = 0 then
Delete(Idade, 1, 1);
if Dia > 1 then
Idade := Idade + ´ e ´ + IntToStr(Dia) + ´ Dias´
else if Dia <> 0 then
Idade := Idade + ´ e ´ + IntToStr(Dia) + ´ Dia´;
if (Mes = 0) And (Ano = 0) then
Delete(Idade, 1, 3);
if (Ano1 = Ano2) And (Mes1 = Mes2) And (Dia1 > Dia2) then
Idade := ´0´;
Result := Idade;
end;
function TForm1.Dias(Data : TDate) : String;
begin
Result := FloatToStr(Date - Data);
end;
function TForm1.Idade(Nasc : TDate) : String;
Var AuxIdade, Meses, IdadeReal : String;
MesesFloat : Real;
IdadeInc : Integer;
begin
AuxIdade := Format(´¬0.2f´, [(Date - Nasc) / 365.6]);
Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
if AuxIdade = ´0´ then begin
Result := ´0,0´;
Exit;
end;
if Meses[1] = ´-´ then
Meses := FloatToStr(StrToFloat(Meses) * -1);
Delete(Meses, 1, 2);
if Length(Meses) = 1 then
Meses := Meses + ´0´;
if (Meses <> ´0´) And (Meses <> ´´) then
MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30)
else
MesesFloat := 0;
if MesesFloat <> 12 then
IdadeReal := IntToStr(Trunc(StrToFloat(AuxIdade))) + ´,´ + FloatToStr(MesesFloat)
else begin
IdadeInc := Trunc(StrToFloat(AuxIdade));
Inc(IdadeInc);
IdadeReal := IntToStr(IdadeInc) + ´,´ + ´0´;
end;
Result := IdadeReal;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
edDias.Text := Dias(StrToDate(meNasc.Text));
edIdade.Text := Idade2(StrToDate(meNasc.Text));
end;
procedure TForm1.meNascKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then begin
SpeedButton1.Click;
Key := 0;
end;
end;
end.
GOSTEI 0
Zunker
31/05/2004
E se depois eu quiser juntar tudo denovo numa data, como eu faço? :roll:
GOSTEI 0
Paulo_amorim
31/05/2004
E se depois eu quiser juntar tudo denovo numa data, como eu faço? :roll:
Olá
Utilize o comando EncodeDate
procedure TForm1.Button1Click(Sender: TObject); var ano, mes, dia: word; begin DecodeDate(StrToDate(Edit1.Text),ano,mes,dia); end;
Aproveitando o código que o Lucas passou, ficaria
MinhaData := EncodeDate(dia, mes, ano);
Até+
GOSTEI 0
Zunker
31/05/2004
Como eu converto uma variavel [b:3aeb69372c]Word[/b:3aeb69372c] em String
E como eu coloco uma variavel para ser data.
E como eu coloco uma variavel para ser data.
GOSTEI 0
Paulo_amorim
31/05/2004
Como eu converto uma variavel [b:9228dd0f35]Word[/b:9228dd0f35] em String
E como eu coloco uma variavel para ser data.
Olá
-Converta com IntToStr
-Declare com o tipo TDateTime
var MinhaData: TDateTime;
pode-se utilizar TDate ou TTime separados, mas dá no mesmo....
Até+
GOSTEI 0