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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 15:34   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию функция - аналог time из С

Надо получить время в секундах, как в функции time() из С, но в Дельфи. Как?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 24.02.2011, 15:45   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Время чего?
Sibedir вне форума Ответить с цитированием
Старый 24.02.2011, 15:56   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Если не изменяет память, в Си функция time() возвращает количество секунд
от нуля часов 01.01.1980 до настоящего момента. Так?
Значит в общих чертах должно выглядеть так
Код:
uses DateUtils;

ShowMessage(FloatToStr(SecondsBetween(StrToDateTime('01.01.1980 00:00:00'), Now)));
Ну, и строку с датой-временем кодируй... чтоб не зависела от формата Винды...
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.02.2011, 16:46   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Сори, не понял вопрос. Наверное переработал.

По теме
Код:
var
  t1, t2: TDateTime;
begin
  t1 := StrToDateTime('30.12.1899 00:00:00');
  t2 := StrToDateTime('29.12.1899 23:59:50');

  ShowMessage (FloatToStr(t2-t1));

  ShowMessage ('сек = ' + IntToStr(SecondsBetween (t1, t2)));
end;
Второй ShowMessage вернет неправильное значение. Почитайте хэлп оп TDateTime и все поймете.
StrToDateTime c времени раньше 30.12.1899 00:00:00 ведет себя мягко говоря не корректно. Но, как говорится, так исторически сложилось. Видимо компу так легче. Хотя как по мне, так это бред.

2 _SERGEYX_
Цитата:
Ну, и строку с датой-временем кодируй... чтоб не зависела от формата Винды...
А что значит - кодируй?

Последний раз редактировалось Sibedir; 24.02.2011 в 16:48.
Sibedir вне форума Ответить с цитированием
Старый 24.02.2011, 17:09   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
А что значит - кодируй?
Ну, в настройках Windows дата может быть такой
dd.mm.yyyy или такой dd/mm/yy или такой yyyy-mm-dd...
Поэтому логично дату 01.01.1980 получить так
Код:
var d: TDateTime;
begin
d:= EncodeDate(1980,1,1) + EncodeTime(0,0,0,0);
ShowMessage(FormatDateTime('dd.mm.yyyy hh:nn:ss',d));
end;
_SERGEYX_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть ли в delphi аналог функции Time() из С++? Juffin Общие вопросы Delphi 1 11.04.2010 18:29
Функция time() data() Как определить ip Abuhamed PHP 4 11.03.2010 15:29
есть ли в php аналог функции XIRR? (XIRR-функция Excel) zvezda_t PHP 1 24.02.2010 15:56
Функция Time SanekIrk Общие вопросы Delphi 2 11.07.2008 22:13
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50