Страница 11 из 39 Функции работы с датами и временем В Delphi для хранения дать! и (или) времени предусмотрен формат TDateTime, представляющий собой, на самом деле, обычное число с плавающей точкой. При этом дата представляется целой частью числа, а время — дробной. Преимущество этого подхода в том, что теперь дать! и времена можно корректно складывать и вычитать, например: var StartTime: tDateTime; procedure TFormI.PormCreate(Sender: TObject); begin StartTime := Now; end; procedure TFormI.FormClick(Sender: TObject); begin Labell.Caption := 'Co времени запуска прошло' + DateTimeToStr(Now - StartTime); end; Функции этой группы приведены в таблице: function EncodeDate(Year, Month, Day: Word): TDateTime; | Преобразует дату, заданную раздельно годом, месяцем и днем, в формат TDateTime. Если они выходят за допустимые пределы, возникает ИС EConvertError. | procedure DecodeDatefDate: TDateTime; var Year, Month, Day: Word); | Преобразует дату в виде TDateTime к раздельным составляющим: году, месяцу и дню. | function EncodeTimefHour, Min, Sec, MSec: Word): TDateTime; | Преобразует значение времени, заданное часом, минутой, секундой и миллисекундой в формат TDateTime. | procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) ; | Преобразует значение времени в формате TDateTime в раздельные составляющие: час, минуту, секунду и миллисекунду. | function DayOfWeektDate: TDateTime): Integer; | Возвращает номер текущего дня недели от 1 (воскресенье) до 7 (суббота). | function Date: TDateTime; | Возвращает текущую дату. | function Time: TDateTime; | Возвращает текущее время. | function Now: TDateTime; | Возвращает текущие дату и время. | function DateToStr(Date: TDateTime): string; | Преобразует дату Date в текстовую строку. | function TimeToStr(Time: TDateTime): string; | Преобразует время из типа TDateTime в текстовую строку. | function DateTimeToStr(DateTime: TDateTime): string; | Преобразует дату и время из типа TDateTime в текстовую строку. | function StrToDatefconst S: string): TDateTime; | Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat. | function StrToTime(const S: string): TDateTime; | Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS — может принимать значения 'AM' или ТМ', иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опускается. Если преобразование невозможно, возникает ИС EConvertError. | function StrToDateTime(const S: string): TDateTime; | Преобразует текстовую строку S в дату и время в формате MM/DD/YY HH:NN:SS (элемент SS см. выше). | function FormatDateTime(const Format: string; DateTime: TdateTime): string; | Преобразует дату и время из типа TDateTime в текстовую строку, используя формат, задаваемый параметром Format (см. примеч. 1). | procedure DateTimeToStringfvar Result: string; const Format: string; DateTime: TDateTime); | Преобразует дату и время типа TDateTime в строку Result, используя формат, передаваемый параметром Format (см. примеч. 1). | Примечания: 1. Правила задания спецификатора формата для даты и времени отличаются от рассмотренных выше. В первую очередь надо иметь в виду то, что функции вроде FormatDateTime оперируют над одним значением TDateTime, а спецификаторы формата извлекают из него те или иные составные части. При этом могут использоваться: с | Отображает дату, используя формат ShortDateFormat, затем отображается время в формате LongTimeFormat. Время не отображается, если дробная часть переменной DateTime нулевая. | d | Отображает число месяца без нуля в левом разряде (1-31). | dd | Отображает число месяца с нулем в левом разряде (01-31). | ddd | Отображает день недели в соответствии с сокращенными именами из переменной ShortDayNames. | dddd | Отображает день недели в соответствии с полными именами из переменной LongDayNames. | ddddd | Отображает дату в соответствии с форматом ShortDateFormat. | dddddd | Отображает дату в соответствии с форматом LongDateFormat. | m | Отображает месяц как число без нуля в левом разряде (1-12). | mm | Отображает месяц как число с нулем в левом разряде (01-12). | irirnm | Отображает месяц в соответствии с сокращенными именами из переменной ShortMonthNames. | П1ГПГПП1 | Отображает месяц в соответствии с полными именами из переменной Long MonthN am es. | УУ | Отображает год двумя цифрами. | УУУУ | Отображает год четырьмя цифрами. | h | Отображает час как число без нуля в левом разряде (0-23). | hh | Отображает час как число с нулем в левом разряде (00-23). | n | Отображает минуты как число без нуля в левом разряде (0-59). | nn | Отображает минуты как число с нулем в левом разряде (00-59). | s | Отображает секунды как число без нуля в левом разряде (0-59). | ss | Отображает секунды как число с нулем в левом разряде (00-59). | t | Отображает время в соответствии с форматом ShortTimeFormat. | tt | Отображает время в соответствии с форматом LongTimeFormat. | am/pin | Отображает время в 12-часовой шкале. 'AM' означает часы до полудня, 'РМ' — часы после полудня. | arnpm | Отображает время в 12-часовой шкале. При этом для времени до полудня отображается содержимое переменной TimeAMString, а после полудня — TimePMString. | a/p | Отображает время в 12-часовой шкале, 'а' означает часы до полудня, 'р' — часы после полудня. | / | Отображает символ — разделитель даты, содержащийся в переменной DataSeparator. |
| Отображает символ — разделитель времени, содержащийся в переменной TimeSeparator. | 'XX'/'XX' | Символы, заключаемые в простые или двойные кавычки, отображаются как есть и не подвергаются форматированию. | Например, результатом вызова функции с параметрами FormatDateTime (' "Совещание состоится в" dddd, dirrmim, yyyy, ' + ' "в" hh:nn', StrToDateTime('12/31/95 23:55')) ; будет строка 'Совещание состоится в среду, 31 декабря 1995 в 23:55' (естественно, если вы переопределили значения элементов массива LongMonth-Names). 2. Спецификаторы am/pm, ampm, a/p используются вместе со спецификаторами h и hh. 3. Спецификаторы могут быть указаны как в верхнем, так и в нижнем регистрах символов — это не играет роли. 4. Начальные значения всех используемых при форматировании даты и времени переменных берутся из секции [inti] файла WIN.INI. |