Дата в Галактике

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Гость

Дата в Галактике

Сообщение Гость »

Есть ли такая функция которая помогает преобразовать дату из галактического формата в понятный обычному человеку
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

datetostr(data,'DD.MM.YYYY') - на выходе получите строку в формате, указанном в шаблоне.
coolibin
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 29 мар 2005, 17:49

Re: Дата в Галактике

Сообщение coolibin »

Наталья Николаевна писал(а):Есть ли такая функция которая помогает преобразовать дату из галактического формата в понятный обычному человеку
Задавайте вопрос поконкретнее, пожалуйста.

Если имеется в виду, что вам не прочитать дату в MSSQL, то поможет что-то типа:

Код: Выделить всё

CREATE Function IntToDate (@Date As Int) Returns DateTime As 
Begin 
Declare @Res DateTime Declare @CYear Char(4), @CMonth Char(2), @CDay Char(2), @CDate VarChar(10) Declare @IYear Int, @IMonth Int, @IDay Int 

Set @IYear=Cast(Ceiling(@Date/65536) As Int) Set @CYear=Right(Cast(@IYear As VarChar(4)),4) Set @Date=@Date-(@IYear*65536)

Set @IMonth=Cast(Ceiling(@Date/256) As Int) Set @CMonth=Right('00'+Cast(@IMonth As VarChar(2)), 2) Set @Date=@Date-(@IMonth*256) Set @IDay=Cast(Ceiling(@Date) As Int) Set @CDay=Right('00'+Cast(@IDay As VarChar(2)), 2) 

if (@IYear=0)or(@IMonth=0)or(@IDay=0)
Set @CDate=Null
else
Set @CDate=@CMonth+'/'+@CDay+'/'+@CYear
Set @Res=Cast(@CDate As DateTime)
Return @Res
End
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Для справки: Атлантис хранит даты в виде упакованной в длинное целое (32-битное) записи следующего вида:

Код: Выделить всё

DateRec=record
  Day   :ShortInt;
  Month :ShortInt;
  Year  :Integer;
 end;
Виталий
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Сообщение lingreen »

Можно в делфях быстро написать
procedure TForm1.Button1Click(Sender: TObject);
var
date:integer;
Year:word;
Month,Day:byte;
begin
date:=StrToint(e.Text);
Year:=Date shr 16;
Month:=(date shr 8) and 255 ;
Day:=date and 255;
Memo1.Lines.Add(InttoStr(Day)+'/'+IntTostr(Month)+'/'+InttoStr(Year))

end;

procedure TForm1.Button2Click(Sender: TObject);
var
DateX:string;
res:integer;
year:word;
Day,Month:byte;
i:integer;
begin
DateX:=e.Text;
i:=pos('.',dateX);
day:=StrToint(Copy(DateX,1,i-1));
Delete(DateX,1,i);
i:=pos('.',dateX);
Month:=StrToint(Copy(DateX,1,i-1));
Delete(DateX,1,i);
Year:=StrToInt(DateX);
res:=day or (month shl 8) or (year shl 16);
memo1.Lines.Add(IntToStr(res));
end;
Ответить