Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Узнать время с точностью до мс


Автор: fara 14.1.2006, 13:55
В PHP есть ф-ия microtime():
Цитата

mixed microtime ( [bool get_as_float] )

Функция microtime() возвращает текущую метку времени с микросекундами. Эта функция доступна только на операционных системах, в которых есть системная функция gettimeofday().

При вызове без необязательного параметра, возвращается строка в формате "msec sec", где sec - это количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT), а msec - это дробная часть.

mixed microtime ( [bool get_as_float] )

microtime() returns the current Unix timestamp with microseconds. This function is only available on operating systems that support the gettimeofday() system call.

When called without the optional argument, this function returns the string "msec sec" where sec is the current time measured in the number of seconds since the Unix Epoch (0:00:00 January 1, 1970 GMT), and msec is the microseconds part. Both portions of the string are returned in units of seconds.


Вот пример:
Цитата

0.57896400 1137236007


Есть ли что-то подобное в Delphi? Я так думаю что ессно есть. Просто я не знаю эту ф-ию. Подскажите пжл

Автор: DemoCode 14.1.2006, 13:57
Код

procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

Остаётся лишь вычислить количество мллисекунд

Автор: fara 14.1.2006, 14:00
Мне неважно, чтобы ф-ия возвращала результат именно в таком формате, важен факт есть ли в Дельфи
ф-ия которая сможет подсчитать:
1. количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT)
2. кол-во миллисекунд
Добавлено @ 14:01
DemoCode
Я не знаю как вычислить кол-во миллисекунд smile
Добавлено @ 14:13
DemoCode
Я сейчас плохо соображаю, подскажи пожалуйста, как получить кол-во секунд прошедших с 1 января 2006 года например, используя ф-ию которую ты привел.

Автор: Albinos_x 14.1.2006, 14:15
Цитата(fara @ 14.1.2006, 14:00 Найти цитируемый пост)

Я не знаю как вычислить кол-во миллисекунд

Код

mili:=((Hour*60*60)+ (Min*60)+ Sec)*100+ MSec; 

или так:
Код

mili:=trunc(Tim/EncodeTime(0,0,0,1));

Добавлено @ 14:23
Цитата(fara @ 14.1.2006, 14:00 Найти цитируемый пост)

Я сейчас плохо соображаю, подскажи пожалуйста, как получить кол-во секунд прошедших с 1 января 2006 года например, используя ф-ию

Код

Ish:=StrToDate('1.01.2006');
Ran:=Time-Ish;
mili:=Trunc(Ran/EncodeTime(0,0,0,1));

Автор: fara 14.1.2006, 14:42
Albinos_x
var Ish, Time, Ran : TDateTime (?);
var mili : (?)

Что находится в переменной Time? Или точнее как она получает значение?

Автор: DemoCode 14.1.2006, 14:48
Time - это функция а не переменная

Автор: Guedda 14.1.2006, 15:27
Код немного не доработан, так как будет абракадабра.
Вот полностью рабочий код:
Код

var
  Ish, Ran, u : TDateTime;
  Mili : LongInt;
begin
  u := Now;
  Ish:=StrToDate('1.01.2006');    
  Ran:=u-Ish;    
  mili:=Trunc(Ran/EncodeTime(0,0,0,1));
end;

Автор: fara 14.1.2006, 15:28
Уважаемые DemoCode, Albinos_x и Guedda, огромное вам спасибо!
Все получилось smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)