Функція FormatDateTime в Delphi – розширене форматування змінної TDateTime в рядок.
SysUtils unit
- function FormatDateTime (const Formatting : string; DateTime : TDateTime) : string;
- function FormatDateTime (const Formatting : string; DateTime : TDateTime; const FormatSettings : TFormatSettings) : string;
Функція FormatDateTime забезпечує розширене форматування TDateTime DateTime значення в рядок. Форматування визначається рядком форматування.
Форматований рядок (Formatting) може містити суміш звичайних символів (які передаються незмінними в рядок результату), і символи форматування даних. Форматування краще пояснюється кодом прикладу.
Наступні (неазіатські) рядки символу форматування можуть використовуватися у рядку, що форматується:
- y = Рік із 2-х останніх цифр;
- yy = Рік із 2-х останніх цифр;
- yyyy = Рік із 4-х цифр;
- m = Номер місяця без 0;
- mm = Номер місяця як 2 цифри;
- mmm = Місяць використовуючи ShortDayNames (Січ);
- mmmm = Місяць використовуючи LongDayNames (Січень);
- d = Число без 0;
- dd = Число як 2 цифри;
- ddd = Число використовуючи ShortDayNames (Нед);
- dddd = Число використовуючи LongDayNames (Неділя);
- ddddd = Число в ShortDateFormat;
- dddddd = Число в LongDateFormat.
- c = Використовуючи ShortDateFormat + LongTimeFormat;
- h = Години без 0;
- hh = Години как 2 цифры;
- n = Хвилини без 0;
- nn = Хвилини як 2 цифри;
- s = Секунды без 0;
- ss = Секунды як 2 цифри;
- z = Мілісекунди без 0;
- zzz = Міллісекунди як 2 цифри;
- t = Використовуючи ShortTimeFormat;
- tt = Використовуючи LongTimeFormat.
- am/pm = Використовується після h : видає 12 годин + am/pm;
- a/p = Використовується після h : видає 12 годин + a/p;
- ampm = Як a/p але TimeAMString,TimePMString;
- / = Замінюється значенням DateSeparator;
- : = Замінюється значенням TimeSeparator.
На додаток до цього форматування, різні з вищезгаданих варіантів зачіпаються наступними змінними, з їх значенням за значенням за замовчуванням:
- DateSeparator = /
- TimeSeparator = :
- ShortDateFormat = dd/mm/yyyy
- LongDateFormat = dd mmm yyyy
- TimeAMString = AM
- TimePMString = PM
- LongTimeFormat = hh:mm:ss
- ShortMonthNames = Січ Лют ...
- LongMonthNames = Січень, Лютий ...
- ShortDayNames = Нед, Пон ...
- LongDayNames = Неділя, понеділок ...
- TwoDigitYearCenturyWindow = 50
Версія 2 цієї функції – для використання у межах потоків. Перед викликом запиту необхідно заповнити запис FormatSettings. Вона бере місцеву копію глобальної змінної, яка форматує змінні, які роблять підпрограму потокобезпечною.
Функція FormatDateTime: Показ усіх типів даних форматування полів дати
var
myDate : TDateTime;
begin
// Встановлення нашої змінної TDateTime у повне значення дати та часу:
// 09/02/2000 в 01:02:03.004 (.004 миллисекунд)
myDate := EncodeDateTime(2000, 2, 9, 1, 2, 3, 4);
// Тільки дата – числові значення без початкових нулів (крім року)
ShowMessage(' d/m/y = '+
FormatDateTime('d/m/y', myDate));
// Тільки дата – числові значення з початковими нулями
ShowMessage(' dd/mm/yy = '+
FormatDateTime('dd/mm/yy', myDate));
// Використання коротких назв для дня, місяця та додавання тексту вільного формату ('of')
ShowMessage(' ddd d of mmm yyyy = '+
FormatDateTime('ddd d of mmm yyyy', myDate));
// Використання довгих назв для дня та місяця
ShowMessage('dddd d of mmmm yyyy = '+
FormatDateTime('dddd d of mmmm yyyy', myDate));
// Використання налаштувань тільки ShortDateFormat
ShowMessage(' ddddd = '+
FormatDateTime('ddddd', myDate));
// Використання налаштувань тільки LongDateFormat
ShowMessage(' dddddd = '+
FormatDateTime('dddddd', myDate));
// Використання налаштувань ShortDateFormat + LongTimeFormat
ShowMessage(' c = '+
FormatDateTime('c', myDate));
end;
Результат
d/m/y = 9/2/00
dd/mm/yy = 09/02/00
ddd d of mmm yyyy = Ср 9 Лют 2000
dddd d of mmmm yyyy = Середа 9 Лютий 2000
ddddd = 09/02/2000
dddddd = 09 Лютого 2000
c = 09/02/2000 01:02:03
Функція FormatDateTime: Показ ефекту місцевих параметрів налаштувань формату дати
var
myDate : TDateTime;
begin
// Встановлення нашої змінної TDateTime у повне значення дати та часу
myDate := StrToDateTime('09/02/49 01:02:03.004');
// Демонстрація локальних налаштувань за замовчуванням
// Використання значень DateSeparator та TimeSeparator
ShowMessage('dd/mm/yy hh:mm:ss = '+
FormatDateTime('dd/mm/yy hh:mm:ss', myDate));
// Використання ShortMonthNames
ShowMessage(' mmm = '+FormatDateTime('mmm', myDate));
// Використання LongMonthNames
ShowMessage(' mmmm = '+FormatDateTime('mmmm', myDate));
// Використання ShortDayNames
ShowMessage(' ddd = '+FormatDateTime('ddd', myDate));
// Використання LongDayNames
ShowMessage(' dddd = '+FormatDateTime('dddd', myDate));
// Використання рядка ShortDateFormat
ShowMessage(' ddddd = '+FormatDateTime('ddddd', myDate));
// Використання рядка LongDateFormat
ShowMessage(' dddddd = '+FormatDateTime('dddddd', myDate));
// Використання TimeAmString
ShowMessage(' hhampm = '+FormatDateTime('hhampm', myDate));
// Використання рядка ShortTimeFormat
ShowMessage(' t = '+FormatDateTime('t', myDate));
// Використання рядка LongTimeFormat
ShowMessage(' tt = '+FormatDateTime('tt', myDate));
// Використання TwoDigitCenturyWindow
ShowMessage(' dd/mm/yyyy = '+
FormatDateTime('dd/mm/yyyy', myDate));
ShowMessage('');
// Тепер показуємо замовчування
DateSeparator := '-';
TimeSeparator := '_';
ShortDateFormat := 'dd/mmm/yy';
LongDateFormat := 'dddd dd of mmmm of yyyy';
TimeAMString := 'утро';
TimePMString := 'день';
ShortTimeFormat := 'hh:mm:ss';
LongTimeFormat := 'hh : mm : ss . zzz';
ShortMonthNames[2] := 'ЛЮТ';
LongMonthNames[2] := 'ЛЮТИЙ';
ShortDayNames[4] := 'ВТ';
LongDayNames[4] := 'ВІВТОРОК';
TwoDigitYearCenturyWindow := 75;
// Установка нашої змінної TDateTime в те саме значення, що і раніше
// за винятком того, що ми повинні використовувати нові роздільники дати та часу
// Тут діє тільки змінна TwoDigitYearCenturyWindow
myDate := StrToDateTime('09-02-49 01_02_03.004');
// Використання значень DateSeparator і TimeSeparator
ShowMessage('dd/mm/yy hh:mm:ss = '+
FormatDateTime('dd/mm/yy hh:mm:ss', myDate));
// Використання ShortMonthNames
ShowMessage(' mmm = '+FormatDateTime('mmm', myDate));
// Використання LongMonthNames
ShowMessage(' mmmm = '+FormatDateTime('mmmm', myDate));
// Використання ShortDayNames
ShowMessage(' ddd = '+FormatDateTime('ddd', myDate));
// Використання LongDayNames
ShowMessage(' dddd = '+FormatDateTime('dddd', myDate));
// Використання рядка ShortDateFormat
ShowMessage(' ddddd = '+FormatDateTime('ddddd', myDate));
// Використання рядка LongDateFormat
ShowMessage(' dddddd = '+FormatDateTime('dddddd', myDate));
// Використання TimeAmString
ShowMessage(' hhampm = '+FormatDateTime('hhampm', myDate));
// Використання рядка ShortTimeFormat
ShowMessage(' t = '+FormatDateTime('t', myDate));
// Використання рядка LongTimeFormat
ShowMessage(' tt = '+FormatDateTime('tt', myDate));
// Використання TwoDigitCenturyWindow
ShowMessage(' dd/mm/yyyy = '+
FormatDateTime('dd/mm/yyyy', myDate));
end;
Результат
dd/mm/yy hh:mm:ss = 09/02/49 01:02:03
mmm = Лют
mmmm = Лютий
ddd = Вт
dddd = Вівторок
ddddd = 09/02/2049
dddddd = 09 Лютий 2049
hhampm = 01AM
t = 01:02
tt = 01:02:03
dd/mm/yyyy = 09/02/2049
dd/mm/yy hh:mm:ss = 09-02-49 01_02_03
mmm = ЛЮТ
mmmm = ЛЮТИЙ
ddd = ВТ
dddd = ВІВТОРОК
ddddd = 09-ЛЮТ-49
dddddd = ВІВТОРОК 09 ЛЮТИЙ 1949
hhampm = 01ранок
t = 01_02_03
tt = 01 _ 02 _ 03 . 004
dd/mm/yyyy = 09-02-1949
Подібні функції, процедури та команди
DateSeparator — символ який використовується для розділення полів дати, що відображається.
DateTimeToStr — конвертує значення дати та часу TDateTime в рядок.
DateTimeToString — величезні можливості форматування дати в рядок.
LongDateFormat — переводить довгу версію дати у строковий формат.
LongDayNames — масив назв днів тижня, починається з 1 = Неділя.
LongMonthNames — масив назв місяців, починається з 1 = Січень.
LongTimeFormat — довга версія часу у рядковому форматі.
ShortDateFormat — компактна версія дати у рядковому форматі.
ShortDayNames — масив назв днів тижня, починаючи з 1 = Неділя.
ShortMonthNames — масив назв днів місяця, починаючи з 1 = Січень.
ShortTimeFormat — коротка версія часу в строковий формат.
StrToDateTime — конвертує рядок з датою та часом на значення типу TDateTime.
TimeAMString — визначає значення AM в процедурі DateTimeToString.
TimePMString — визначає значення PM в процедурі DateTimeToString.
TimeSeparator — символ, який використовується для розділення полів часу.
TwoDigitYearCenturyWindow — встановлює поріг століття для перетворень рядка року із 2 цифр.
