Дата в Галактике
Модераторы: m0p3e, edward_K, Модераторы
Дата в Галактике
Есть ли такая функция которая помогает преобразовать дату из галактического формата в понятный обычному человеку
Re: Дата в Галактике
Задавайте вопрос поконкретнее, пожалуйста.Наталья Николаевна писал(а):Есть ли такая функция которая помогает преобразовать дату из галактического формата в понятный обычному человеку
Если имеется в виду, что вам не прочитать дату в 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
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
Для справки: Атлантис хранит даты в виде упакованной в длинное целое (32-битное) записи следующего вида:
Код: Выделить всё
DateRec=record
Day :ShortInt;
Month :ShortInt;
Year :Integer;
end;
Виталий
Можно в делфях быстро написать
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
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
or (year shl 16);
memo1.Lines.Add(IntToStr(res));
end;
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

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

memo1.Lines.Add(IntToStr(res));
end;