Jhonas Postado Março 24, 2009 Denunciar Share Postado Março 24, 2009 Como não achei nada na internet para o delphi, resolvi montar este codigo para o pessoal:Converter data Juliana para Gregoriana e vice versa unit UJulianGreg; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Data : string; MesGreg, DiaGreg, AnoGreg : real; implementation {$R *.DFM} Uses Math; Procedure GtoJ(DiaGreg, MesGreg, AnoGreg : integer); var A, B: integer; JulDate : real; begin if (MesGreg <= 2) then begin MesGreg := MesGreg + 12; AnoGreg := AnoGreg - 1; end; A := Math.floor(AnoGreg/100); B := 2 - A + Math.floor(A/4); julDate := Math.floor(365.25*(AnoGreg+4716)) + Math.floor(30.6001*(MesGreg+1)) + DiaGreg + B - 1524.5; Data:= floattostr(julDate); end; Procedure JtoG(julDate : real); var Epsilon, omega , A, B, C, D, Z, f : real; MesGregText : string; begin julDate := julDate + 0.5; z := Math.floor(julDate); f := julDate - z; if (z < 2299161) then A := z else omega := Math.floor((z-1867216.25)/36524.25); A := z + 1 + omega - Math.floor(omega/4); B := A + 1524; C := Math.floor((B-122.1)/365.25); D := Math.floor(365.25*C); Epsilon := Math.floor((B-D)/30.6001); DiaGreg := B - D - Math.floor(30.6001*Epsilon) + f; if (Epsilon < 14) then MesGreg := Epsilon - 1 else MesGreg := Epsilon - 13; if (MesGreg > 2) then AnoGreg := C - 4716 else AnoGreg := C - 4715; case trunc(MesGreg) of 1 : MesGregText := 'Janeiro'; 2 : MesGregText := 'Fevereiro'; 3 : MesGregText := 'Março'; 4 : MesGregText := 'Abril'; 5 : MesGregText := 'Maio'; 6 : MesGregText := 'Junho'; 7 : MesGregText := 'Julho'; 8 : MesGregText := 'Agosto'; 9 : MesGregText := 'Setembro'; 10 : MesGregText := 'Outubro'; 11 : MesGregText := 'Novembro'; 12 : MesGregText := 'Dezembro'; end; end; procedure TForm1.Button1Click(Sender: TObject); var Year, Month, Day : Word; begin // Data Gregoriana para Juliana // Dia , Mes , Ano Data:= InputBox('Data Gregoriana', 'Digite uma data', '00/00/0000'); DecodeDate(strtodate(Data), Year, Month, Day); GtoJ(Day,Month,Year); Label1.caption := ('Data Juliana : ' + Data ); end; procedure TForm1.Button2Click(Sender: TObject); begin // Data Juliana para Gregoriana Data:= InputBox('Data Juliana', 'Digite uma data', '00000000,00'); JtoG(strtofloat(Data)); Label2.Caption := ('Data Gregoriana : ' + inttostr(trunc(DiaGreg)) + ' / ' + inttostr(trunc(MesGreg)) + ' / ' + inttostr(trunc(AnoGreg))); end; end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jhonas
Como não achei nada na internet para o delphi, resolvi montar este codigo para o pessoal:
Converter data Juliana para Gregoriana e vice versa
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.