Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2013, 19:18   #1
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
Вопрос unix timestamp > Date(DD.MM.YYYY) [Решено]

Всем Привет,

Есть дата в секундах: 1451563200
Что соответствует дате: 31st December 2015 12:00:00 PM (UTC)
Проверялось тут: http://unixtime.info

Вопрос: Как перевести кол-во секунд в дату в формате: DD.MM.YYYY

З.Ы. Поиск по форуму не дал желаемого результата.

Delphi XE3

Последний раз редактировалось XerSon; 28.02.2013 в 21:49.
XerSon вне форума Ответить с цитированием
Старый 28.02.2013, 19:37   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://compfaq.ru/Question.aspx?id=8...3-9b68164deaad
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.02.2013, 20:04   #3
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
function UnixTimeToDateTime(UnixTime : LongInt): TDate;
begin
    Result := DateTimeToStr(UnixTime / SecPerDay + Offset1970);
end;
[dcc32 Error] uUnixToDate.pas(57): E2010 Incompatible types: 'TDate' and 'string'
XerSon вне форума Ответить с цитированием
Старый 28.02.2013, 20:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А заглянуть в HELP и увидеть, что DateTimeToStr возвращает String и подправить тип результата UnixTimeToDateTime на String слабо?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.02.2013, 20:17   #5
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А заглянуть в HELP и увидеть, что DateTimeToStr возвращает String и подправить тип результата UnixTimeToDateTime на String слабо?
Весело, ну ок.
XerSon вне форума Ответить с цитированием
Старый 28.02.2013, 21:09   #6
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Допилил для себя:

Код:
function UnixTimeToDateTime(UnixTime: LongInt): String;
const
  SecPerDay = 86400;
  Offset1970 = 25569;
var
  Source, Target: string;
begin
  Source := DateTimeToStr(UnixTime / SecPerDay + Offset1970);
  Target := Copy(Source, 1, 10);
  Result := Target;
end;

Юзаем так:
...
Edit2.Text := UnixTimeToDateTime(StrToInt(Edit1.Text));
...
XerSon вне форума Ответить с цитированием
Старый 20.03.2013, 13:43   #7
DeathAngels
Новичок
Джуниор
 
Регистрация: 11.09.2012
Сообщений: 1
По умолчанию

Цитата:
Сообщение от XerSon Посмотреть сообщение
Допилил для себя:

Код:
function UnixTimeToDateTime(UnixTime: LongInt): String;
const
  SecPerDay = 86400;
  Offset1970 = 25569;
var
  Source, Target: string;
begin
  Source := DateTimeToStr(UnixTime / SecPerDay + Offset1970);
  Target := Copy(Source, 1, 10);
  Result := Target;
end;

Юзаем так:
...
Edit2.Text := UnixTimeToDateTime(StrToInt(Edit1.Text));
...
А обратно можно? из обычной даты в unix ?
DeathAngels вне форума Ответить с цитированием
Старый 20.03.2013, 14:58   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Конечно можно.
Только будет гораздо проще склеивать обычную дату из года, месяца, дня, часов, минут и секунд, чем парсить строку. Тем более, что единого международного способа записи даты/времени не существует.
s-andriano вне форума Ответить с цитированием
Старый 20.03.2013, 16:29   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот, когда то "выгрызал" код из библиотеки TurboPower Abbrevia

вдруг это то, что Вы ищите...

Код:
implementation

{$R *.DFM}
const
  Date1900 {: LongInt} = $0001AC05;  {Julian day count for 01/01/1900 -- TDateTime Start Date}
  Date1970 {: LongInt} = $00020FE4;  {Julian day count for 01/01/1970 -- Unix Start Date}
  Unix0Date: TDateTime = 25568;      {Date1970 - Date1900}

  SecondsInDay    = 86400;  {Number of seconds in a day}
  SecondsInHour   =  3600;  {Number of seconds in an hour}
  SecondsInMinute =    60;  {Number of seconds in a minute}
  HoursInDay      =    24;  {Number of hours in a day}
  MinutesInHour   =    60;  {Number of minutes in an hour}
  MinutesInDay    =  1440;  {Number of minutes in a day}


function AbDateTimeToUnixTime(DateTime : TDateTime) : LongInt;
{ convert Delphi TDateTime to unix date }
var
  Hrs, Mins, Secs, MSecs : Word;
  Dt, Tm : TDateTime;
begin
  Dt := Trunc(DateTime);
  Tm := DateTime - Dt;
  if Dt < Unix0Date then
    Result := 0
  else
    Result := Trunc(Dt - Unix0Date) * SecondsInDay;

  DecodeTime(Tm, Hrs, Mins, Secs, MSecs);
  Result := Result + (Hrs * SecondsInHour) + (Mins * SecondsInMinute) + Secs;
end;


procedure TForm1.Button1Click(Sender: TObject);
var dt : TDateTime;
begin
  dt := EncodeDate(1995,8,3);
  Button1.Caption := IntToStr(  AbDateTimeToUnixTime( now )  );
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2013, 19:13   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Открою тайну: в Delphi есть готовые функции для конвертации всех распространённых форматов.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Unix Timestamp ArtemKrass C# (си шарп) 0 14.12.2012 20:44
PHP & delphi - разные данные UNIX TIMESTAMP phphel Общие вопросы Delphi 5 03.07.2012 21:58
MySQL (yyyy-mm-dd) -> DBF (dd.mm.yyyy) Prontit БД в Delphi 5 26.09.2011 14:24
Вывод только одного года ('yyyy') из даты 'dd.mm.yyyy'. В Accese Droid БД в Delphi 13 09.12.2009 13:37
Как преобразовать из dd/mm/yyyy в dd.mm.yyyy? Dux Общие вопросы Delphi 11 06.10.2009 00:21