Большинство программ, которые вы пишете, нуждаются в реализации некоторой формы функций даты, возвращающих текущую дату и время. Свидания настолько важны в повседневной жизни, что с ними легко работать, не задумываясь. Паскаль также предоставляет мощные инструменты для арифметики дат, которые упрощают манипулирование датами. Однако фактическое имя и работа этих функций различны для разных компиляторов.
Получение текущей даты и времени
Функция Pascal TimeToString дает вам текущее время в форме с разделителями (:). В следующем примере показано, как получить текущее время –
program TimeDemo; uses sysutils; begin writeln (‘Current time : ‘,TimeToStr(Time)); end.
Когда приведенный выше код был скомпилирован и выполнен, он дает следующий результат –
Current time : 18:33:08
Функция Date возвращает текущую дату в формате TDateTime . TDateTime – это двойное значение, которое требует некоторого декодирования и форматирования. Следующая программа демонстрирует, как использовать ее в вашей программе для отображения текущей даты:
Работа с Файлами в Pascal
Program DateDemo; uses sysutils; var YY,MM,DD : Word; begin writeln (‘Date : ‘,Date); DeCodeDate (Date,YY,MM,DD); writeln (format (‘Today is (DD/MM/YY): %d/%d/%d ‘,[dd,mm,yy])); end.
Когда приведенный выше код был скомпилирован и выполнен, он дает следующий результат –
Date: 4.111300000000000E+004 Today is (DD/MM/YY):23/7/2012
Функция Now возвращает текущую дату и время –
Program DatenTimeDemo; uses sysutils; begin writeln (‘Date and Time at the time of writing : ‘,DateTimeToStr(Now)); end.
Когда приведенный выше код был скомпилирован и выполнен, он дает следующий результат –
Date and Time at the time of writing : 23/7/2012 18:51:
Free Pascal предоставляет простую структуру меток времени с именем TTimeStamp , которая имеет следующий формат:
type TTimeStamp = record Time: Integer; Date: Integer; end;
Различные функции даты и времени
Free Pascal предоставляет следующие функции даты и времени –
function DateTimeToFileDate (DateTime: TDateTime): LongInt;
Преобразует тип DateTime в дату файла.
Функция DateTimeToStr (DateTime: TDateTime) :;
Создает строковое представление DateTime
function DateTimeToStr (DateTime: TDateTime; const FormatSettings: TFormatSettings) :;
Создает строковое представление DateTime
процедура DateTimeToString (out Результат:; const FormatStr:; const DateTime: TDateTime);
Создает строковое представление DateTime
процедура DateTimeToString (out Результат:; const FormatStr:; const DateTime: TDateTime; const FormatSettings: TFormatSettings);
Создает строковое представление DateTime
процедура DateTimeToSystemTime (DateTime: TDateTime; выход SystemTime: TSystemTime);
Преобразует DateTime в системное время
function DateTimeToTimeStamp (DateTime: TDateTime): TTimeStamp; Преобразует DateTime в метку времени
Функция DateToStr (Date: TDateTime) :;
Создает строковое представление даты
Turbo Pascal — Основы работы и пример программы
function DateToStr (Date: TDateTime; const FormatSettings: TFormatSettings) :;
Создает строковое представление даты
Функция Date: TDateTime;
Получает текущую дату
function DayOfWeek (DateTime: TDateTime): Integer;
Получает день недели
процедура DecodeDate (Дата: TDateTime; год выхода: слово; месяц выхода: слово; день выхода: слово);
Декодирует DateTime в год, месяц и день
процедура DecodeTime (время: TDateTime; вне часа: слово; вне минуты: слово; вне секунды: слово; вне миллисекунды: слово);
Декодирует DateTime в часы, минуты и секунды
функция EncodeDate (год: слово; месяц: слово; день: слово): TDateTime;
Кодирует год, день и месяц в DateTime
функция EncodeTime (час: слово; минута: слово; секунда: слово; миллисекунда: слово): TDateTime;
Кодирует часы, минуты и секунды в DateTime
Функция FormatDateTime (const FormatStr:; DateTime: TDateTime) :;
Возвращает строковое представление DateTime
функция FormatDateTime (const FormatStr:; DateTime: TDateTime; const FormatSettings: TFormatSettings) :;
Возвращает строковое представление DateTime
функция IncMonth (const DateTime: TDateTime; NumberOfMonths: Integer = 1): TDateTime;
Добавляет 1 к месяцу
function IsLeapYear (Год: Слово): Boolean;
Определяет, является ли год високосным
function MSecsToTimeStamp (MSecs: Comp): TTimeStamp;
Преобразует количество миллисекунд в метку времени
функция сейчас: TDateTime;
Получает текущую дату и время
function StrToDateTime (const S :): TDateTime;
Преобразует строку в DateTime
function StrToDateTime (const s: ShortString; const FormatSettings: TFormatSettings): TDateTime;
Преобразует строку в DateTime
function StrToDateTime (const s: AnsiString; const FormatSettings: TFormatSettings): TDateTime;
Преобразует строку в DateTime
function StrToDate (const S: ShortString): TDateTime;
Преобразует строку в дату
function StrToDate (const S: Ansistring): TDateTime;
Преобразует строку в дату
function StrToDate (const S: ShortString; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: AnsiString; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: ShortString; const useformat:; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: AnsiString; const useformat:; separator: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: PChar; Len: Integer; const useformat:; separator: Char = # 0): TDateTime;
Преобразует строку в дату
function StrToTime (const S: Shortstring): TDateTime;
Преобразует строку во время
function StrToTime (const S: Ansistring): TDateTime;
Преобразует строку во время
function StrToTime (const S: ShortString; разделитель: Char): TDateTime;
Преобразует строку во время
function StrToTime (const S: AnsiString; разделитель: Char): TDateTime;
Преобразует строку во время
function StrToTime (const S:; FormatSettings: TFormatSettings): TDateTime;
Преобразует строку во время
function StrToTime (const S: PChar; Len: Integer; разделитель: Char = # 0): TDateTime;
Преобразует строку во время
function SystemTimeToDateTime (const SystemTime: TSystemTime): TDateTime;
Преобразует системное время в datetime
function TimeStampToDateTime (const TimeStamp: TTimeStamp): TDateTime;
Преобразует метку времени в DateTime
function TimeStampToMSecs (const TimeStamp: TTimeStamp): comp;
Преобразует метку времени в количество миллисекунд
функция TimeToStr (Time: TDateTime) :;
Возвращает строковое представление времени
function TimeToStr (Time: TDateTime; const FormatSettings: TFormatSettings) :;
Возвращает строковое представление времени
функция Time: TDateTime;
Получить текущее время
function DateTimeToFileDate (DateTime: TDateTime): LongInt;
Преобразует тип DateTime в дату файла.
Функция DateTimeToStr (DateTime: TDateTime) :;
Создает строковое представление DateTime
function DateTimeToStr (DateTime: TDateTime; const FormatSettings: TFormatSettings) :;
Создает строковое представление DateTime
процедура DateTimeToString (out Результат:; const FormatStr:; const DateTime: TDateTime);
Создает строковое представление DateTime
процедура DateTimeToString (out Результат:; const FormatStr:; const DateTime: TDateTime; const FormatSettings: TFormatSettings);
Создает строковое представление DateTime
процедура DateTimeToSystemTime (DateTime: TDateTime; выход SystemTime: TSystemTime);
Преобразует DateTime в системное время
function DateTimeToTimeStamp (DateTime: TDateTime): TTimeStamp; Преобразует DateTime в метку времени
Функция DateToStr (Date: TDateTime) :;
Создает строковое представление даты
function DateToStr (Date: TDateTime; const FormatSettings: TFormatSettings) :;
Создает строковое представление даты
Функция Date: TDateTime;
Получает текущую дату
function DayOfWeek (DateTime: TDateTime): Integer;
Получает день недели
процедура DecodeDate (Дата: TDateTime; год выхода: слово; месяц выхода: слово; день выхода: слово);
Декодирует DateTime в год, месяц и день
процедура DecodeTime (время: TDateTime; вне часа: слово; вне минуты: слово; вне секунды: слово; вне миллисекунды: слово);
Декодирует DateTime в часы, минуты и секунды
функция EncodeDate (год: слово; месяц: слово; день: слово): TDateTime;
Кодирует год, день и месяц в DateTime
функция EncodeTime (час: слово; минута: слово; секунда: слово; миллисекунда: слово): TDateTime;
Кодирует часы, минуты и секунды в DateTime
Функция FormatDateTime (const FormatStr:; DateTime: TDateTime) :;
Возвращает строковое представление DateTime
функция FormatDateTime (const FormatStr:; DateTime: TDateTime; const FormatSettings: TFormatSettings) :;
Возвращает строковое представление DateTime
функция IncMonth (const DateTime: TDateTime; NumberOfMonths: Integer = 1): TDateTime;
Добавляет 1 к месяцу
function IsLeapYear (Год: Слово): Boolean;
Определяет, является ли год високосным
function MSecsToTimeStamp (MSecs: Comp): TTimeStamp;
Преобразует количество миллисекунд в метку времени
функция сейчас: TDateTime;
Получает текущую дату и время
function StrToDateTime (const S :): TDateTime;
Преобразует строку в DateTime
function StrToDateTime (const s: ShortString; const FormatSettings: TFormatSettings): TDateTime;
Преобразует строку в DateTime
function StrToDateTime (const s: AnsiString; const FormatSettings: TFormatSettings): TDateTime;
Преобразует строку в DateTime
function StrToDate (const S: ShortString): TDateTime;
Преобразует строку в дату
function StrToDate (const S: Ansistring): TDateTime;
Преобразует строку в дату
function StrToDate (const S: ShortString; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: AnsiString; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: ShortString; const useformat:; разделитель: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: AnsiString; const useformat:; separator: Char): TDateTime;
Преобразует строку в дату
function StrToDate (const S: PChar; Len: Integer; const useformat:; separator: Char = # 0): TDateTime;
Преобразует строку в дату
function StrToTime (const S: Shortstring): TDateTime;
Преобразует строку во время
function StrToTime (const S: Ansistring): TDateTime;
Преобразует строку во время
function StrToTime (const S: ShortString; разделитель: Char): TDateTime;
Преобразует строку во время
function StrToTime (const S: AnsiString; разделитель: Char): TDateTime;
Преобразует строку во время
function StrToTime (const S:; FormatSettings: TFormatSettings): TDateTime;
Преобразует строку во время
function StrToTime (const S: PChar; Len: Integer; разделитель: Char = # 0): TDateTime;
Преобразует строку во время
function SystemTimeToDateTime (const SystemTime: TSystemTime): TDateTime;
Преобразует системное время в datetime
function TimeStampToDateTime (const TimeStamp: TTimeStamp): TDateTime;
Преобразует метку времени в DateTime
function TimeStampToMSecs (const TimeStamp: TTimeStamp): comp;
Преобразует метку времени в количество миллисекунд
функция TimeToStr (Time: TDateTime) :;
Возвращает строковое представление времени
function TimeToStr (Time: TDateTime; const FormatSettings: TFormatSettings) :;
Возвращает строковое представление времени
функция Time: TDateTime;
Получить текущее время
Следующий пример иллюстрирует использование некоторых из вышеуказанных функций –
Program DatenTimeDemo; uses sysutils; var year, month, day, hr, min, sec, ms: Word; begin writeln (‘Date and Time at the time of writing : ‘,DateTimeToStr(Now)); writeln(‘Today is ‘,LongDayNames[DayOfWeek(Date)]); writeln; writeln(‘Details of Date: ‘); DecodeDate(Date,year,month,day); writeln (Format (‘Day: %d’,[day])); writeln (Format (‘Month: %d’,[month])); writeln (Format (‘Year: %d’,[year])); writeln; writeln(‘Details of Time: ‘); DecodeTime(Time,hr, min, sec, ms); writeln (format(‘Hour: %d:’,[hr])); writeln (format(‘Minutes: %d:’,[min])); writeln (format(‘Seconds: %d:’,[sec])); writeln (format(‘Milliseconds: %d:’,[hr])); end.
Когда приведенный выше код был скомпилирован и выполнен, он дал следующий результат:
Источник: coderlessons.com
Как засечь время выполнения программы паскаль
← →
Михаил2 ( 2008-10-28 16:12 ) [0]
Не совсем в тему Delphi. Потребовалось для учебы сделать на паскале маленькую процедуру сортировки массива. Хочу засечь время ее выполнения. Каким образом это сделать?
1. Засечь время_1.
2. Выполнить операцию N раз.
3. Засечь время_2.
4. Рассчитать среднее время выполнения операции: (время_2 — время_1) / N.
Время можно засекать через GetThreadTimes, GetTickCount, Now.
Я так понял, что у него турбик под ДОС.
procedure GetTime(var Hour, Minute, Second,
Sec100 : Word);
Returns the current time set in the
operating system.
Реализация может зависеть от того где будет выполняться программа — «чистый» DOS или сессия под Windows и какая ось именно.
Источник: delphimaster.net
Нахождение времени выполнения программы на паскале
Я хочу найти время выполнения программы, которую я написал на Паскале, но я не знаю синтаксиса для этого. есть ли функция, которая его вычисляет? Я немного поискал и обнаружил, что люди используют тип TDateTime и присваивают var значение now, а другому var значение now (одно перед программой, для которой мы хотим иметь время выполнения, и одно после), а затем вычисляем разницу между двумя значениями. Но я не могу этого сделать, потому что мне понадобится библиотека DateUtils (которой у меня нет??). Есть ли другой способ рассчитать время выполнения??
(у меня виндовс 10)
ichil 13 Дек 2022 в 19:12
Если вы хотите измерить время, которое занимает вся программа, вам потребуется использовать внешнюю программу, такую как time . Вы имели в виду, что хотите измерить время выполнения подпрограммы?
Kai Burghardt
13 Дек 2022 в 19:21
Да, я имел в виду время выполнения подпрограммы, а не всей программы.
13 Дек 2022 в 19:39
Какую ОС вы используете?
13 Дек 2022 в 19:44
Пожалуйста, найдите кнопку Редактировать под тегами вашего вопроса и отредактируйте свой вопрос, чтобы было ясно, что вы хотите измерить время выполнения подпрограммы. Также включите запрошенную информацию об ОС.
Tom Brunberg
13 Дек 2022 в 19:47
1 ответ
Используйте модуль SysUtils и из что функция Now() даст вам текущую дату и время. Вызовите его один раз до и один раз после того, что вы хотите измерить. Поскольку TDateTime на самом деле всего лишь Double вы можете работать с ним арифметически (вычитание) — таким образом, вы можете позже просто вытащить каждый компонент времени (и даты), чтобы увидеть, как долго он длился:
program TimeDiff; uses SysUtils; // Every Pascal implementation should have this // Just pointless calculations to waste CPU cycles function RoutineToMeasure(): Integer; var i, j: Integer; begin result:= 0; for i:= 0 to $7FFFFFFF do begin j:= i div 24; j:= j+ 10; result:= result xor j; result:= result or i; end; end; // The actual program to measure times var tStart, tEnd, tDiff: TDateTime; // Begin and end of measurement, and difference iHours, iMinutes, iSeconds, iMilliseconds: Word; // Time components begin tStart:= Now(); // Get date+time RoutineToMeasure(); tEnd:= Now(); // Get date+time again // To be read by a human Writeln( ‘ started: ‘, DateTimeToStr( tStart ) ); Writeln( ‘ finished: ‘, DateTimeToStr( tEnd ) ); // Calculating the actual time it took tDiff:= tEnd- tStart; // Subtract higher from lower value DecodeTime( tDiff, iHours, iMinutes, iSeconds, iMilliseconds ); // Does not account for day changes when executing around midnight Writeln( ‘ taken: ‘, iHours, ‘ h, ‘, iMinutes, ‘ min, ‘, iSeconds, ‘ sec, ‘, iMilliseconds, ‘ msec’ ); Readln(); end.
Успешно протестировано в Lazarus 2.2.0 с FCP 3.2.2; результат соответствует 4-ядерному процессору с частотой 3,2 ГГц:
started: 2022-12-14 14:33:07 finished: 2022-12-14 14:33:12 taken: 0 h, 0 min, 5 sec, 323 msec
Источник: question-it.com