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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2011, 15:46   #1
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
Восклицание Получить количество секунд с 1970?

Обыскал весь форум а ответа не нашел. Может есть у кого решение?
Нужно узнать кол-во секунд с 1970 года по текущий момент!
men232 вне форума Ответить с цитированием
Старый 03.08.2011, 15:56   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Года переводишь в дни. Дни в секунды. В сутках 86400 секунд. Делай поправку на високосные года.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.08.2011, 16:03   #3
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

ммм... есть готовый код!? Или пример! Суть я понял, как реализовать программно не знаю!

Последний раз редактировалось men232; 03.08.2011 в 16:06.
men232 вне форума Ответить с цитированием
Старый 03.08.2011, 16:07   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

хоть язык бы указал
p51x вне форума Ответить с цитированием
Старый 03.08.2011, 16:10   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Пусть х=текущая_дата
Тогда всего_лет=х-1970
Дни_с_високосными_годами=всего_лет* 365+целое_от(всего_лет/4)
Секунды=дни_с_високосными_годами*86 400

Возможно еще придется один день досчитывать, если 1970 високосный...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.08.2011, 16:22   #6
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

Язык Delphi! во что написал:

Код:
T1:=Now;
T2:=T1-1970;
T3:=T2*365+Int(X1/4);
T4:=T3*86400;
Time:=DateTimeToStr(T3);
Так что ли? И мой результат x4? Он равен - 19.11.40662 10:08:15
Мне нужно что то типо такого получить "1311931381"

Последний раз редактировалось men232; 03.08.2011 в 16:25.
men232 вне форума Ответить с цитированием
Старый 03.08.2011, 16:27   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не не так. 2011-1970. Правда надо еще до августа число дней прибавить...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.08.2011, 16:32   #8
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

А можно ли сделать это автоматически! Не хочется перекомпелировать каждый раз!

Попробовал как вы сказали, не получилось (20.12.1940) вот что вышло а нужно типо такое "1311931381"

Вот нашел сайт, там это всё в онлайне делается, подобное нужно сделать в delphi

Последний раз редактировалось Serge_Bliznykov; 03.08.2011 в 16:52.
men232 вне форума Ответить с цитированием
Старый 03.08.2011, 16:48   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вытащил функцию
function AbDateTimeToUnixTime(DateTime : TDateTime) : LongInt;
{ convert Delphi TDateTime to unix date }
из модуля ABBREVIA: AbUtils.pas 3.05 (входит в состав ABBREVIA)

Код:
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;
тестируйте...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.08.2011, 16:52   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

men232, Вы уверены, что понимаете, чего хотите?!!

Цитата:
Нужно узнать кол-во секунд с 1970 года по текущий момент!
Цитата:
получилось (20.12.1940) вот что вышло а нужно типо такое "1311931381"
Вам не кажется, что нельзя сказать, сколько секунд прошло с 1970 года, если год 1940 ?!!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить количество строк не делая лишний запрос lacost SQL, базы данных 7 20.01.2011 11:06
Получить количество записей с определенным значением RamireZ БД в Delphi 7 04.06.2010 07:12
Как получить количество столбцов из выборки ssdm Java Базы данных (JDBC, JPA, Hibernate) 1 25.01.2010 19:21