Справочник по компонентам Delphi. Часть 1 - Функции работы с датами и временем
ОГЛАВЛЕНИЕ
Функции работы с датами и временем
В 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 StrToDate(const S: string): TDateTime; | Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat. |
function StrToTime(const S: string): TDateTime; | Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS — может принимать значения 'AM' или ТМ', иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опускается. Если преобразование невозможно, возникает ИС EConvertError. |
functionStrToDateTime(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.