IncMillisecond — Функция Delphi

Получить текущее время Milliseconds

Как получить текущее время в миллисекундах?

Я знаю, что нужно использовать сейчас, но мне нужно получить миллисекунды.

Возвращает количество миллисекунд между заданным значением TDateTime и началом того же дня.

Если вам нужны миллисекунды с другого временного интервала, есть и другие подобные функции: MilliSecondOfTheYear , MilliSecondsBetween и т.д.

DecodeDateTime займет TDateTime и сможет разделить его на Год, Месяц, День, Час Минуты Второй и Миллисекунды.

Когда у вас есть отдельные номера, вы можете использовать математику для вычисления текущего миллисекундного счета за полночь.

TDateTime — это double где 1 — день. Константа SecsPerDay, объявленная в SysUtils, представляет количество секунд в день, поэтому для получения Now в миллисекундах:

IncMillisecond — Функция Delphi

Подскажите как можно определить время выполнения функции.
есть одно предположение:
время после выполнения команды минус время перед выполнением команды, но как определить время.

В моем случае выполняется сортировка массива, нужно определить за какое время она выполняется
Есть функция Time и GetTime но я чето никак не разберусь с ними, хэлп не рулит. там я вообще ничего не пойму.

Кто знает — подскажите.

З.Ы.Дэлфи-консольное приложение. так что если дополнительные подули нужны — напишите плиз.

Модуль DateUtils.pas (в поставке Delphi).
Из этого модуля можно применить функцию MilliSecondsBetween.

procedure TestingFunc;
var T1 : TDateTime; MS : Integer (или Int64);
begin
T1 := Now;
. //тело тестируемой функции
MS := MilliSecondsBetween(Now, T1);
end;

Sanya
именно ими и надо мерять. RDTSC назвается и есть у всех процессоров, начиная с первого пентиума. Скорость выполнения большинства функций gettickcount ом не засечешь, даже если 1000 раз подряд фукнцию вызовешь. Получить текущее значение такта можно так:
function GetCPUTick: int64; assembler;
asm
db 0fh,31h; //rdtsc
end;

Получив этой фукнцией до выолнения и после выполнения ты получишь ПОЧТИ точное кол-во тактов на выполнение фукнции. Почти, потому что время второго вызова RDTSC тоже немножко отжирает. Совсем чуток :)
Darthman1145111327
Кстати, именно этой фукнцией офигенно удобно отлаживать критические к скорости процедуры и куски кода. Отлаживать всмысле смотреть ускорил ты, или замедлил :)

implementation
var t1,diff:Tdatetime ;

procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=now;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
diff:=now-t1;
edit1.text:=TimeTostr(diff);
end;
в результате в поле edit1 отображается время прошедшее между последовательными нажатиями button1 и button2 в следующем формате hh:mm:ss Пойдет?

если вместо TimeTostr(diff) использовать FormatFloat(‘0.00’,diff*24*60*60);
то промежуток времени будет выражен в секундах с сотыми долями. sysutils коорый используется функией now ввключается в uses лист форм по умолчанию.

MilliSecondsBetween(Now, T1);
стало быть функция MilliSecondsBetween(x1,x2)=24*60*60*1000*(x1-x2) :)

Засечь время с точностью в миллисекунду

Необходимо отметить две временные точки и вычислить разницу между ними в миллисекундах.
Разница может быть от 20 мс и выше, так что необходима очень быстрая функция.

GetTime — Здорово, но возвращает результат в _SYSTEMTIME, который есть структура и просто так разницу в миллисекундах в нем не вычислишь.

Now — Круто, возвращает результат в Double (что в принципе ересь, но ладно) — но долго работает, ибо в своих кишках имеет GetLocalTime и перевод в цикле из _SYSTEMTIME в Double.

GetTickCount — Зависит от частоты процессора. И даже, если её знать теоретически она может меняться при параметрах энергосбережения.

Есть вообще в Delphi нормальные способы засекать время быстро и точно?

13.07.2012, 12:52

Нужно засечь время выполнения процедуры
писал вот код form1.timer.enabled:=true; search; form1.timer.enabled:=false;Код таймера.

Клик мышки в заданное время с точностью миллисекундах
Пожалуйста, у меня просьба добрым программистам: Нужен мини программка с расширением «swf» или типо.

Засечь время от начала одной операции до окончания другой
Такая задача- допустим юзер открывает файл, текстовый, который потом выводится в TMemo, нужно.

Измерить время с точностью до сотой секунды без API
Доброго времени суток глубокоуважаемые форумчане. Задача однозначна, распространёна и проста.

Засечь время
Как засечь время за которое выполняется процедура, или время выполнения алгоритма?

Процедуры и функции преобразования дат и времени (часть 2)

HourOf fconst AValue: TDateTime): Word

Возвращает час указанного значения AValue; то же, что HourOfTheDav .

HourOfThePav fconst AValue: TDateTime): Word

Возвращает час указанного значения AValue; то же, что HourOfDay .

HourOfTheMonth(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала месяца, к которо­му относится указанное значение AValue, до этого указанного значения.

Илон Маск рекомендует:  Администрирование баз данных

HourOfTheWeek(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала недели, к которой относится указанное значение AValue, до этого указанного значения.

HourOfTheYear(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала года, к которому относится указанное значение AValue, до этого указанного значения.

HoursBetween fconst ANow, AThen: TDateTime): Int64

Возвращает число полных часов между двумя указанными значениями ANow и AThen.

HourSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность часов (с учетом дробных частей часа) двух указанных значений ANow и AThen.

IncAMonth(var Year, Month, Day: Word; NumberOfMonths: Integer = 1)

Изменяет заданные значения года Year, месяца Month и дня Day, добав­ляя к указанной дате NumberOfMonths месяцев. Число месяцев Number­OfMonths может быть отрицательным.

IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfDays дней. Число дней ANumberOfDays может быть отрица­тельным.

IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1):

TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfHours часов. Число часов ANumberOfHours может быть отрицательным.

IncMilliSecond(const AValue: TDateTime;

const ANumberOfMilliseconds: Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfMilliSeconds миллисекунд. Число миллисекунд ANumberOfMilliSeconds может быть отрицательным.

IncMinute(const AValue: TDateTime; const ANumberOfMinutes:

Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfMinutes минут. Число минут ANumberOfMinutes

может быть отрицательным.

IncMonth(const Date: TDateTime; NumberOfMonths: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате Date на NumberOfMonths месяцев. Число месяцев NumberOfMonths может быть отрицательным.

IncSecond(const AValue: TDateTime; const ANumberOfSeconds:

Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfSeconds секунд. Число секунд ANumberOfSeconds может быть отрицательным.

IncWeek(const AValue: TDateTime; const ANumberOfWeeks: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfWeeks недель. Число недель ANumberOfWeeks может быть от­рицательным.

IncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfYears лет. Число лет ANumberOfYears может быть отрица­тельным.

IsInLeapYear(const AValue: TDateTime): Boolean

Определяет, относится ли указанная дата AValue к високосному году.

IsLeapYear(Year: Word): Boolean

Определяет, является ли указанный год Year високосным.

IsPM(const AValue: TDateTime): Boolean

Определяет, относится ли указанное время AValue ко второй половине дня (после полудня).

IsSameDay(const AValue, ABasis: TDateTime): Boolean

Определяет, относятся ли два указанных значения AValue и ABasis к од­ному дню.

IsToday(const AValue: TDateTime): Boolean

Определяет, относится ли указанное значение AValue к текущему дню.

IsValidDate(eonst AYear, AMonth, ADay: Word): Boolean

Определяет допустимость указанных значений года AYear, месяца AMonth и дня ADay.

MilliSecondOfl const AValue: TDateTime): Word

Извлекает миллисекунды из величины AValue типа TDateTime. Идентич­на функции MilliSecondOfTheSecond .

MilliSecondOfTheSecond fconst AValue: TDateTime): Word

Извлекает миллисекунды из величины AValue типа TDateTime. Идентич­на функции MilliSecondOf .

MilliSecondsBetween fconst ANow, AThen: TDateTime): Int64

Возвращает разность миллисекунд двух указанных значений ANow и

MilliSecondSpan (const ANow, AThen: TDateTime): Double

Возвращает разность миллисекунд двух указанных значений ANow и AThen. MinutcOtY const AValue: TDateTime): Word

Извлекает минуты из величины AValue типа TDateTime. Идентична функ­ции MinuteOfTheHour .

MinuteOfTheHour tconst AValue: TDateTime): Word

Извлекает минуты из величины AValue типа TDateTime. Идентична функ­ции MinuteOf .

MinutesBetwcen (const ANow, AThen: TDateTime): Int64

Возвращает число полных минут между двумя указанными значениями ANow и AThen.

MinuteSpan (const ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность минут (с учетом

секунд, как дробных частей минуты) двух указанных значений ANow и

MonthOf(const AValue: TDateTime): Word

Извлекает месяц из величины AValue типа TDateTime. Идентична функ-

MonthOfTheYcar (const AValue: TDateTime): Word

Извлекает месяц из величины AValue типа TDateTime. Идентична функ­ции MonthOf .

MonthsBetween (const ANow, AThen: TDateTime): Int64

Возвращает число полных месяцев (с некоторой погрешностью) между дву­мя указанными значениями ANow и AThen.

MonthSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее число месяцев (с учетом дробной части месяца, но с некоторой погрешностью) между двумя ука­занными значениями ANow и AThen.

Now : TDateTime

Возвращает текущую дату и время.

RecodeDate(const AValue: TDateTime;

const AYear, AMonth, ADay: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с датой, измененной в соответствии с заданными значениями года AYear, месяца AMonth, дня ADay.

RecodeDateTime(const AValue: TDateTime; const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с датой, измененной в соответствии с заданными значениями года AYear, месяца AMonth, дня ADay, и временем, измененным в соответст­вии с заданными значениями часа AHour, минут AMinute, секунд ASecond, миллисекунд AMilliSecond. Каждый из параметров может быть задан равным RecodeLeaveFieldAsIs, что будет означать, что данное значе­ние не изменяется.

Илон Маск рекомендует:  Printer - Функция Delphi

RecodeDay(const AValue: TDateTime; const ADay: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с днем, замененным на указанное значение ADay.

RecodeHour(const AValue: TDateTime; const AHour: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с часом, замененным на указанное значение AHour.

RecodeMilliSecond(const AValue: TDateTime; const AMilliSecond: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с числом миллисекунд, замененным на указанное значение AMilliSecond.

RecodeMinute(const AValue: TDateTime; const AMinute: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с минутами, замененными на указанное значение AMinute.

RecodeMonth(const AValue: TDateTime; const AMonth: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с месяцем, замененным на указанное значение AMonth.

RecodeSecond(const AValue: TDateTime; const ASecond: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с секундами, замененными на указанное значение ASecond.

RecodeTime(const AValue: TDateTime;

const AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с временем, измененным в соответствии с заданными значениями часа AHour, минут AMinute, секунд ASecond, миллисекунд AMilliSecond.

RecodeYear(const AValue: TDateTime; const AYear: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с годом, замененным на указанное значение AYear.

ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime)

Заменяет дату в заданном значении AValue на дату другого заданного значения NewDate, оставляя время неизменным.

ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime)

Заменяет время в заданном значении AValue на время другого заданного значения NewDate, оставляя дату неизменной.

SecondOf(const AValue: TDateTime): Word

Извлекает секунды из величины AValue типа TDateTime. Идентична

SecondOfTheMinute fconst AValue: TDateTime): Word

Извлекает секунды из величины AValue типа TDateTime. Идентична функции SecondOf .

SecondsBetween fconst ANow, AThen: TDateTime): Int64

Возвращает число полных секунд между двумя указанными значениями ANow и AThen.

SecondSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность секунд (с учетом миллисекунд, как дробных частей секунды) двух указанных значений ANow и AThen.

StrToDate (const S: string): TDateTime

Преобразует строку S в дату формата TDateTime. StrToDateTime (const S: string): TDateTime Преобразует строку S в формат даты и времени. StrToTime (const S: string): TDateTime

Преобразует строку S в формат времени TDateTime. Time : TDateTime Возвращает текущее время.

TimeToStr (Time: TDateTime): string Преобразует время Time в строку.

TryEncodeDate (Year. Month, Day: Word; out Date: TDateTime): Boolean

Объединяет год Year, месяц Month и день Day в значение Date типа TDateTime. Возвращает false, если заданные значения месяца или дня не­допустимы.

TryEncodeTime (Hour, Min, Sec, MSec: Word; out Time: TDateTime):

Boolean;

Объединяет час Hour, минуту Min, секунду Sec и миллисекунду MSec в значение типа TDateTime. Возвращает false при ошибочных данных.

VarFromDateTime(DateTime: TDateTime): Variant;

Создает объект variant, содержащий дату и время DateTime.

VarSQLTimeStampCreate(var aDest: Variant;

const ASQLTimeStamp: TSQLTimeStamp)

Создает объект aDest типа variant с данными, полученными из записи

ASQLTimeStamp типа TSQLTimeStamp .

VarSQLTimeStampCreate(const AValue: TDateTime): Variant Возвращает объект типа variant с полученными из AValue данными, хра­нящимися в записи типа TSQLTimeStamp .

VarSQLTimeStampCreate: Variant

Возвращает объект типа variant с нулевыми данными, хранящимися в за­писи типа TSQLTimeStamp .

VarSQLTimeStampCreate(const ASQLTimeStamp: TSQLTimeStamp):

Variant

Возвращает объект типа variant с полученными из ASQLTimeStamp дан­ными, хранящимися в записи типа TSQLTimeStamp .

VarSQLTimeStampCreate(const AValue: string): Variant

Возвращает объект типа variant с полученными из строки AValue данны­ми, хранящимися в записи типа TSQLTimeStamp .

YearOf(const AValue: TDateTime): Word

Извлекает год из величины AValue типа TDateTime.

YearsBetween (const ANow, AThen: TDateTime): Integer

Возвращает число полных лет (с некоторой погрешностью) между двумя указанными значениями ANow и AThen.

YearSp_an(const ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее число полных лет (с учетом дробной части неполного года, но с некоторой погрешностью) между двумя указанными значениями ANow и AThen.

CheckSqlTimeStamp(const ASQLTimeStamp :TSQLTimeStamp)

Проверяет правильность представления даты и времени в записи ASQLTimeStamp типа TSQLTimeStamp. Если значения полей записи име­ют недопустимые значения, генерируется исключение EConverError.

CompareDate (const А, В: TDateTime): TValueRelationship

Сравнивает даты А и В. Возвращает -1 (LessThanValue), если день даты А меньше дня даты В, 0 (EqualsValue), если дни А и В совпадают, +1 (GreaterThanValue), если день даты А больше дня даты В.

CompareDateTime fconst А, В: TDateTime): TValueRelationship

Сравнивает значения А и В. Возвращает -1 (LessThanValue) при А ( EqualsValue ) при А = В, +1 ( Grea terThanValue) при А > В.

CompareTime (const А, В: TDateTime): TValueRelationship

Сравнивает значения А и В, но только их часть, относящуюся ко времени. Возвращает -1 (LessThanValue) при А В

Илон Маск рекомендует:  Что такое код destroyicon

encodetime, incmilliseconds in delphi

i have create a coding to set a 20 millisecond faster than windows system. i’m using encodetime.

aftr i run it, show the correct time. but the date goes to 30 dec 1899.. but i want to the current today date but with the time faster 20 milliseconds. any help.. please.

2 Answers 2

You have the arguments of ReplaceDate backward. It reads the date of the second parameter and assigns the date portion of the first parameter. The date portion of delphi_datetime is 0 because that’s how EncodeTime works. You take that zero value and assign it to t_date , but then you continue working with delphi_datetime .

Reverse the arguments of ReplaceDate , and you should see that your current system time gets set to 8:45:00.000 with the current date.

You could have noticed the mistake sooner if you hadn’t used a separate t_date variable. If you’d called Date directly, your code would have failed to compile:

IncMilliSecond

Increase a DateTime value with a number of milliseconds.

Declaration

Source position: dateutil.inc line 297

Arguments

DateTime to which milliseconds should be added.

Number of milliseconds to add

Function result

DateTime representing AValue plus ANumberOfMilliSeconds milliseconds.

Arguments

DateTime to which milliseconds should be added.

Description

IncMilliSecond adds ANumberOfMilliSeconds milliseconds to AValue and returns the resulting date/time. ANumberOfMilliSeconds can be positive or negative.

See also

Increase a DateTime value with a number of years.

Increases the month in a TDateTime value with a given amount.

Increase a DateTime value with a number of weeks.

Increase a DateTime value with a number of days.

Increase a DateTime value with a number of hours.

Increase a DateTime value with a number of seconds.

Increase a DateTime value with a number of milliseconds.

IncMilliSecond Routine

Description

(Please provide a description in your own words. It is illegal to use the wording from the Delphi Help.)

Technical Comments

(Known issues / Documentation clarifications / Things to be aware of)

Examples

(Please provide links to articles/source code that show how to use this item.)

See Also

(Please provide links to items specifically related to this item.)

User Comments/Tips

(Please leave your name with your comment.)

IncMilliSecond

Increase a DateTime value with a number of milliseconds.

Declaration

Source position: dateutil.inc line 297

Arguments

DateTime to which milliseconds should be added.

Number of milliseconds to add

Function result

DateTime representing AValue plus ANumberOfMilliSeconds milliseconds.

Arguments

DateTime to which milliseconds should be added.

Description

IncMilliSecond adds ANumberOfMilliSeconds milliseconds to AValue and returns the resulting date/time. ANumberOfMilliSeconds can be positive or negative.

See also

Increase a DateTime value with a number of years.

Increases the month in a TDateTime value with a given amount.

Increase a DateTime value with a number of weeks.

Increase a DateTime value with a number of days.

Increase a DateTime value with a number of hours.

Increase a DateTime value with a number of seconds.

Increase a DateTime value with a number of milliseconds.

Функции и процедуры Delphi. Справочник.

Функция EncodeTime(
Hour, Min, Sec, MSec: Word ): TDateTime;

Описание
Функция преобразовывает значения часов, минут, секунд и миллисекунд, переданных в параметрах Hour, Min, Sec, MSec соответственно, в значение типа TDateTime. Исходные значения должны иметь допустимые величины: Hour — 0.. 23; Min — 0.. 59; Sec — 0.. 59; MSec — 0.. 999. Если значения выходят за пределы заданных диапазонов, то возникает исключение EConvertError.
Функция возвращает значение в диапазоне [0.. 1). Результирующее значение определяет часть дня, прошедшую к указанному времени (например, 0 — полночь, 0.5 — полдень, 0.75 — 18:00 и т.д.).

Пример
var
T: TDateTime;
begin
T:= EncodeTime( 7, 30, 0, 0);
MessageDlg( TimeToStr(T), mtInformation, [mbOk], 0);
end;

Программирование Delphi

Все о программировании.

Главное меню

Преобразование Микросекунд в значение TDateTime

Функция FormatDateTime преобразовывает значение TDateTime в строковое значение. При использовании параметров форматирования можно задать способ отображения времени с точностью до миллисекунд.

При тестировании скорости выполнения кода или когда у Вас есть долго выполняющиеся функции, Вам нужно отобразить длительность выполнения процесса вплоть до микросекунд.

Пользовательский класс TStopWatch может быть использован для измерения скорости выполнения, где необходима точность в микросекундах, или даже в наносекундах.

Примечание: Здесь 1000 микросекунд в одной миллисекунде и 1000 наносекунд в одну микросекунду.

Микросекунды в FormatDateTime

Вот пользовательская функция MicrosecondsToTime, которую Вы можете использовать для преобразования микросекунд в значение TDateTime, а затем для преобразования в более удобное для пользователей представление с помощью функции FormatDateTime:

Примечание: Если у Вас имеются миллисекунды, а Вам нужно значение TDateTime — преобразуйте миллисекунды в Days и Time.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL