Вообще говоря, для описания времени в Delphi используется несколько структур данных, и работа времени по сути является работой этих структур.
Тип TDateTime:
Наиболее часто используемый тип данных, представляющий дату и время в Delphi, — это тип TDateTime. Как и обычное целое число, вы можете определить переменную даты для работы в программе. Тип TdateTime по сути является числом типа Double. Тип TdateTime определяется в Delphi следующим образом: type TDateTime = type Double. Конкретный алгоритм заключается в использовании целой части числа Double для представления даты, например 30 декабря 1989 года. базовая точка. Сложите и вычтите дни, например, число 1 представляет 1 января 1900 года, а число -1 представляет 29 декабря 1989 года. Десятичная часть используется для выражения времени, и ее значение представляет собой отношение выражаемого времени к общему времени целого дня. Например, 6 часов утра — это 6/24 = 0,25, а 6: 15 утра — это (6*60+15)/(24*60)=0,260416666666666666666666666667. Ниже приведены несколько примеров, иллюстрирующих взаимодействие между типом TDateTime и типом Double.
0 30.12.1899 00:00:00
2.75 01.01.1900 18:00:00
-1,25 29.12.1899 6:00:00
35065 01.01.1996 00:00:00
Я считаю, что каждый может понять метод преобразования между TdateTime и Double. Поэтому работа TDateTime принципиально такая же, как и у Double.
Тип TTimeStamp:
Это тип структуры, используемый для описания даты и времени. В Delphi он определяется следующим образом:
type TTimeStamp = Record Time: Integer {Количество миллисекунд от 0:00 до указанного времени} Date: Integer {Количество дней от сегодняшнего дня до указанной даты} end;
По сравнению с TDateTime, он может более интуитивно выражать время с высокой точностью и обычно используется для операций на уровне миллисекунд и для выражения более длительного времени.
Тип PsystemTime:
Структура указателя, используемая для операций со временем в WinApi. Его определение таково:
тип PSystemTime = ^TSystemTime; TSystemTime = запись wYear: Word; wDayOfWeek: Word; wHour: Word; wSecond: Word; wMilliсекунды: Word;
Эта структура чаще всего используется при вызове операций WinApi.
Поняв суть различных типов времени, я считаю, что у каждого есть набор идей по управлению этими типами времени. Однако Delphi также предоставляет полный набор функций процессов для управления временем. Эти процессы и функции определены в SysUnit. unit, сейчас я познакомлю вас с соответствующими функциями Delphi:
Функции для манипулирования временем
Функция даты:
Определение: Дата: TDateTime;
Функция: вернуть текущую дату
пример:
ТекущаяДата := Дата;
Функция ДеньНедели:
Определение: функция DayOfWeek(Date: TDateTime): Integer;
Функция: Получите значение дня недели указанной даты и верните число от 1 до 7, представляющее воскресенье-субботу.
Функция IncMouth:
Определение: функция IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;
Функция: найти дату заданной даты. Данные после числа месяцев.
пример:
Дата1:= IncMonth(дата,10);
Если сегодня 2002-5-3, то Date1 — 2003-3-3.
Функция IsLeapYear:
Определение: функция IsLeapYear(Год: Слово): логическое значение;
Функция: Определить, является ли указанный год високосным;
пример:
if isLeapYear(2000) then ShowMessage('Этот год високосный');
Теперь функция:
Определение: функция Сейчас: TDateTime;
Функция: используется для получения текущей даты и времени.
пример:
ТекущаяДатаВремя := Сейчас;
Процедура заменыдаты
Определение: процедура replaceDate(var DateTime: TDateTime; const NewDate: TDateTime);
Функция: используйте часть даты параметра Newdate, чтобы заменить часть даты параметра DateTime, но не изменяйте часть времени.
Процедура заменыдаты
Определение: процедура replaceTime(var DateTime: TDateTime; const NewTime: TDateTime);
Функция: используйте часть времени параметра Newdate, чтобы заменить часть времени параметра DateTime, но не меняйте часть даты.
Если два вышеупомянутых процесса используются вместе, это эквивалентно присвоению.
Функция времени:
Определение: функция Time: TDateTime;
Функция: вернуть текущее время
пример:
ТекущееВремя := Время;
Функции преобразования между различными типами времени
Функция DateTimeToFileDate:
Определение: DateTimeToFileDate(DateTime: TDateTime): Integer;
Функция: Преобразование времени типа TDateTime во время в среде Dos. Метод доступа ко времени в среде Dos отличается от типа TdateTime в VCL. При выполнении файловых операций для обеспечения согласованности времени необходимо использовать функцию DateTimeToFileDate. После преобразования возвращаемое целочисленное значение является значением, используемым для описания времени в Dos.
Процедура DateTimeToSystemTime:
Определение: процедура DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
Функция: преобразование времени типа TDateTime в тип TSystemTime, используемый функцией Win API, которая используется при использовании функции WinApi для управления временем.
Функция SystemTimeToDateTime:
Определение: функция SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
Функция: Преобразование номера типа TSysTemTime, полученного в функции WinApi, в тип TDateTime.
Функция DateTimeToTimeStamp:
Функция TimeStampToDateTime:
Определение: DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
функция TimeStampToDateTime (const TimeStamp: TTimeStamp): TDateTime;
Функция: используется для преобразования между типом TDataTime и TTimeStamp. TDataTime использует двойное число для описания времени, а TTimeStamp использует два целых числа для описания времени соответственно. Разницу между этими двумя типами можно найти в разделе описания типов данных в начале статьи.
Функция EncodeDate:
Определение: функция EncodeDate(Год, Месяц, День: Слово): TDateTime;
Функция: введите значения года, месяца и дня и верните дату в виде типа TDateTime. Диапазон лет — 1–9999, диапазон месяцев — 1–12, а диапазон дат зависит от текущего месяца. В ситуации, если введенное значение выходит за пределы диапазона, будет сгенерировано EConvertError.
Процесс декодирования даты:
Определение: процедура DecodeDate(Дата: TDateTime; var Год, Месяц, День: Слово);
Функция: введите дату типа TDateTime и преобразуйте ее в значение года, месяца и дня. Если входное значение равно 0 или меньше 0, тогда год, месяц и день равны 0,
Функция EncodeTime:
Определение: EncodeTime(час, минута, секунда, мсек: слово): TDateTime;
Функция: введите значение часа (Hour), минуты (min), секунды (Sec), микросекунды (MSec) и верните время типа TDateTime, которое представляет собой десятичное число от 0 до 1. Диапазон значений Hour составляет 0–23, диапазон значений Min — 0–59, диапазон значений Sec — 0–59, а диапазон значений MSec — 0–999. Если входное значение превышает диапазон, отображается сообщение. EConvertError генерируется ошибка.
Процесс декодирования:
Определение: процедура DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
Функция: введите время и преобразуйте его в часы, минуты, секунды и микросекунды (мсек).
Функция преобразования типа TDateTime и строкового типа:
Функция DateTimeToStr:
Функция ДатаТоСтр
Функция ТаймТоСтр
Определение: функция DateTimeToStr(DateTime: TDateTime): строка;
функция TimeToStr(Time: TDateTime): строка;
функция TimeToStr(Time: TDateTime): строка;
Функция: преобразует число типа TDateTime в строку, DateTimeToStr преобразует дату и время, DateToStr преобразует только дату, а TimeToStr преобразует только время. Преобразованный выходной эффект: YYYY-MD H:M:S.
Функция Стртодатетиме
Функция СтрТодате
Функция СтртоТиме
Определение: функция StrToDateTime(const S: string): TDateTime;
функция StrToDate (const S: строка): TDateTime;
функция StrToTime(const S: string): TDateTime;
Функция: конвертирует строку с форматом даты и времени в TDateTime, где S должна быть допустимой строкой, например
ГГ-ММ-ДД в формате ЧЧ:ММ:СС, в противном случае будет вызвано событие EConvertError и появится сообщение об ошибке.
Строка временной части должна состоять из 2–3 числовых строк и разделяться символами-разделителями, установленными в региональных настройках Windows. Требования к формату должны соответствовать настройкам региональных настроек Windows, где ЧЧ, ММ (час, час, минута) необходимо добавить, SS (секунда) не является обязательным, вы также можете добавить Am и Pm в конце, чтобы различать утро и день. В это время система будет считать, что используется 12-часовое представление, в противном случае это будет так. считали, что используется круглосуточное представление.
Формат части даты должен соответствовать короткому формату даты в региональных настройках Windows, который также состоит из 2–3 числовых строк. Если в строке только 2 числа, считается, что это месяц и дата. указан, а год — текущий год.
Если в локали используется двузначное представление года, система будет обрабатывать его следующим образом:
В качестве базового значения текущего года начала введите год 03. Введите год 50. Введите год 68.
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
Сначала получите год начала двухзначного года в региональных настройках. Например, если в региональных настройках установлен двузначный диапазон лет, начальный год равен 32 годам. 0 считается двумя цифрами. Год представляет это столетие. Если год на самом деле больше 0, используется значение текущего года за вычетом начального года. Если оно больше. больше или равно этому значению, считается это столетие, в противном случае оно считается следующим столетием. Приведите несколько примеров:
Процедура DateTimeToString:
Функция ФорматДатаВремя:
Определение: процедура DateTimeToString(var Result: string; const Формат: строка; DateTime: TDateTime);
функция FormatDateTime (константный формат: строка; DateTime: TDateTime): строка;
Функция: Получите строку времени для вывода, определив формат в строке формата. Например, если вы хотите вывести «Сегодня пятница, 5 мая 2002 г.», вы можете использовать эти два метода. Функция, но одна Выходная строка получается через общие переменные. Значение находится в Result. Другой — получить выходную строку через возвращаемое значение. Параметр DateTime — это значение даты, которое вы хотите вывести. Формат состоит из формата. флаг и дополнительную строку. Дополнительная строка заключена в «», как и функция Printf в C. Например, значение формата «Сегодня пятница, 5 мая 2002 г.» равно «» Сегодня «гггг» год «мм» месяц «дд» день ," дддд', гггг, мм, дд, дддд — все это идентификаторы формата. Объяснения различных идентификаторов формата следующие:
d: используйте одно или два целых числа для отображения дня (1–31).
dd: используйте два целых числа для отображения дня и используйте 0, чтобы заполнить менее двух цифр (01-31).
ddd: Отображение номера текущей недели в сокращенной форме. Если версия Windows английская, она будет отображаться как Пн-Вс. Если это китайская версия, она будет отображаться как dddd.
dddd: отображение номера текущей недели в полном формате. Если используется английская версия Windows, будет отображаться Monday-SumDay. Если это китайская версия, будет отображаться понедельник-воскресенье.
ddddd : Вывод в коротком формате даты в локали.
dddddd : Вывод в длинном формате даты в локали.
m: используйте одно или два целых числа для отображения месяца (1–12).
мм: используйте два целых числа для отображения месяца. Если количество цифр меньше двух, используйте 0, чтобы составить (01–12).
ммм: используйте сокращение для отображения названия месяца. Английская версия отображается как январь-декабрь, а китайская версия — как мммм.
мммм: используйте полный метод для отображения названия месяца. В английской версии отображается период с января по декабрь, а в китайской версии — с января по декабрь.
yy: Отобразить год как двузначное целое число (00–99).
гггг: отображение года в виде четырехзначного целого числа (0000–9999).
h: используйте одно или два целых числа для отображения часа (0–23).
чч: используйте два целых числа для отображения часа. Если количество цифр меньше двух, используйте 0, чтобы составить (00-23).
n: используйте одно или два целых числа для отображения минут (0–60).
nn: используйте два целых числа для отображения минут и используйте 0 для обозначения менее двух цифр (00–60).
s: используйте одно или два целых числа для отображения секунд (0–60).
ss: используйте два целых числа для отображения секунд и используйте 0 для обозначения менее двух цифр (00–60).
z: отображать миллисекунды с помощью одного-двух целых чисел (0–999).
zzz: используйте трехзначные целые числа для отображения миллисекунд. Если число меньше трех, используйте 0 для составления (000–999).
tt: отображает дату в формате локали.
am/pm: используется для 12-часового отображения, где AM представляет от 0 до 12 часов, а pm — от 12 до 0 часов.
Переменные, связанные со временем:
Delphi инкапсулирует различную информацию о локальных настройках и определяет ряд переменных. Вот некоторые переменные, связанные со временем:
DateSeparator:Char
Разделитель даты, используемый для разделения года, месяца и дня.
TimeSeparator:Char
Разделитель времени, используемый для разделения часов, минут и секунд.
ShortDateFormat: строка
Определение короткого формата даты в локали.
Лонгдатеформат: строка
Определение длинного формата даты в локали.
ShortTimeFormat: строка
Определение короткого формата времени в локали.
Лонгтимеформат: строка
Определение длинного формата в локали.
TimeAMString: Строка
Строка, используемая для обозначения утра
TimePMString: Строка
Строка, используемая для представления дня
ShortMonthNames: массив [1..12] строки;
Массив, используемый для сокращения названия месяца, представляет собой строку, идентифицируемую ммм, отображаемую при использовании FormatDateTime.
LongMonthNames: массив [1..12] строки;
Массив, используемый для полного представления названия месяца, представляет собой строку, идентифицируемую mmmm, отображаемую при использовании FormatDateTime.
ShortDayNames: массив [1..7] строки;
Массив, используемый для сокращения имени дня недели, представляет собой строку, идентифицируемую ddd, отображаемую при использовании FormatDateTime.
LongDayNames: массив[1..7] из String;
Массив, используемый для полного представления названия недели, представляет собой строку, идентифицируемую ddd, отображаемую при использовании FormatDateTime.
TwoDigitYearCenturyWindow:Word = 50;
Начальный год при использовании двузначных чисел.
Хорошо, теперь часть об операциях со временем в Delphi в основном завершена. Читатели также могут проверить соответствующие файлы справки, чтобы решить проблемы, с которыми они сталкиваются, в соответствии со своими потребностями при использовании реального программирования.