Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Вопрос по Юлианской дате   Найти похожие ветки 

 
vigo   (2005-07-27 17:39) [0]

Добрый день! Если кто работал с Юлианской датой подскажите как её "получить". И наоборот перевести в обычный формат.


 
han_malign ©   (2005-07-27 17:54) [1]

DateUtils.pas:

function DateTimeToJulianDate(const AValue: TDateTime): Double;
var
 LYear, LMonth, LDay: Word;
begin
 DecodeDate(AValue, LYear, LMonth, LDay);
 Result := (1461 * (LYear + 4800 + (LMonth - 14) div 12)) div 4 +
           (367 * (LMonth - 2 - 12 * ((LMonth - 14) div 12))) div 12 -
           (3 * ((LYear + 4900 + (LMonth - 14) div 12) div 100)) div 4 +
           LDay - 32075.5 + Frac(AValue);
end;

function JulianDateToDateTime(const AValue: Double): TDateTime;
begin
 if not TryJulianDateToDateTime(AValue, Result) then
   raise EConvertError.CreateFmt(SInvalidJulianDate, [AValue]);
end;

function TryJulianDateToDateTime(const AValue: Double;
 out ADateTime: TDateTime): Boolean;
var
 L, N, LYear, LMonth, LDay: Integer;
begin
 L := Trunc(AValue) + 68570;
 N := 4 * L div 146097;
 L := L - (146097 * N + 3) div 4;
 LYear := 4000 * (L + 1) div 1461001;
 L := L - 1461 * LYear div 4 + 31;
 LMonth := 80 * L div 2447;
 LDay := L - 2447 * LMonth div 80;
 L := LMonth div 11;
 LMonth := LMonth + 2 - 12 * L;
 LYear := 100 * (N - 49) + LYear + L;
 Result := TryEncodeDate(LYear, LMonth, LDay, ADateTime);
 if Result then
   ADateTime := ADateTime + Frac(AValue) - 0.5;
end;


 
vigo   (2005-07-27 18:16) [2]

Так, например, юлианскую дату в нормальную перевсти получается не хитро: ShowMessage(""+FormatDateTime("ddmm", 209)+""); // показывает 27.07
А вот наоборот не получается: ShowMessage(""+DateToStr(DateTimeToJulianDate(Now))+""); // показывает 01.09.8617



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
8-1111570778
the P
2005-03-23 12:39
2005.08.14
Помогите плз, как преобразовать PNG(8-битная прозрачность) в Ico?


3-1120471111
Yurisimus
2005-07-04 13:58
2005.08.14
Верхний регистр в ADOQuery


4-1119519704
ORMADA
2005-06-23 13:41
2005.08.14
CreateProcess трабл


3-1120549321
DeStranger
2005-07-05 11:42
2005.08.14
Кодировка при экспорте дампа в Oracle


14-1122357192
Ega23
2005-07-26 09:53
2005.08.14
С днем рождения! 26 июля