Процедура DateTimeToString в Delphi – величезні можливості форматування дати в рядок.
SysUtils unit
- procedure DateTimeToString (var Result : string; const Formatting : string; DateTime : TDateTime);
- procedure DateTimeToString (var Result : string; const Formatting : string; DateTime : TDateTime; const FormatSettings : TFormatSettings);
Процедура DateTimeToString дозволяє форматувати дату та час, і у потрібному форматі дати та часу DateTime (тип TDateTime) переводити у рядок. Тобто Delphi процедура DateTimeToString дозволяє форматувати час і дату.
Форматування рядка може містити змішування звичайних символів (дата буде переведена в рядок саме так, як вкаже користувач). Приклад форматування добре представлений у прикладі коду.
Наступні (неазіатські) символи формату дати можуть бути використані:
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 = Час без 0
n = Хвилини без 0
nn = Хвилини як 2 цифри
s = Секунди без 0
ss = Секунди як 2 цифри
z = Мілісекунди без 0
zzz = Мілісекунди як 3 цифри
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
ShortTimeFormat = hh:mm
LongTimeFormat = hh:mm:ss
ShortMonthNames = Jan Feb ...
LongMonthNames = January, February ...
ShortDayNames = Sun, Mon ...
LongDayNames = Sunday, Monday ...
TwoDigitCenturyWindow = 50
Версія 2 цієї функції – для використання у межах потоків. Перед викликом запиту заповнюєте запис FormatSettings. Вона отримує локальну копію глобальної форматуючої змінної, яка робить вашу підпрограму потокобезпечною.
Процедура DateTimeToString: Показ усіх типів форматування даних полів дати
var
myDate : TDateTime;
formattedDateTime : string;
begin
// Встановлення нашої TDateTime змінною повною датою та часом:
// 09/02/2007 в 01:02:03.004 (.004 мілісекунд)
myDate := EncodeDateTime(2007, 2, 9, 1, 2, 3, 4);
// Тільки дата – числові значення без початкових нулів (крім року)
DateTimeToString(formattedDateTime, 'd/m/y', myDate);
ShowMessage(' d/m/y = '+formattedDateTime);
// Тільки дата – числові значення з початковими нулями
DateTimeToString(formattedDateTime, 'dd/mm/yy', myDate);
ShowMessage(' dd/mm/yy = '+formattedDateTime);
// Використання короткої назви дня, місяця та додавання тексту вільного формату ('of')
DateTimeToString(formattedDateTime, 'ddd d of mmm yyyy', myDate);
ShowMessage(' ddd d of mmm yyyy = '+formattedDateTime);
// Використання довгих імен дня та місяця
DateTimeToString(formattedDateTime, 'dddd d of mmmm yyyy', myDate);
ShowMessage('dddd d of mmmm yyyy = '+formattedDateTime);
// Використання параметрів налаштування тільки ShortDateFormat
DateTimeToString(formattedDateTime, 'ddddd', myDate);
ShowMessage(' ddddd = '+formattedDateTime);
// Використання параметрів лише LongDateFormat
DateTimeToString(formattedDateTime, 'dddddd', myDate);
ShowMessage(' dddddd = '+formattedDateTime);
// Використання параметрів налаштування ShortDateFormat + LongTimeFormat
DateTimeToString(formattedDateTime, 'c', myDate);
ShowMessage(' c = '+formattedDateTime);
end;
Результат
d/m/y = 9/2/07
dd/mm/yy = 09/02/07
ddd d of mmm yyyy = П`ятн 9 Лют 2007
dddd d of mmmm yyyy = П`ятниця 9 Лютий 2007
ddddd = 09/02/2007
dddddd = 09 Лютий 2007
c = 09/02/2007 01:02:03
Процедура DateTimeToString: Показ усіх типів форматування даних полів часу
var
myDate : TDateTime;
formattedDateTime : string;
begin
// Встановлення нашої TDateTime змінної повною датою та часом :
// 09/02/2007 в 01:02:03.004 (.004 мілісекунд)
myDate := EncodeDateTime(2000, 2, 9, 1, 2, 3, 4);
// Тільки час – числові значення без використання нулів
DateTimeToString(formattedDateTime, 'h:m:s.z', myDate);
ShowMessage(' h:m:s.z = '+formattedDateTime);
// Тільки час – числові значення з використанням нулів
DateTimeToString(formattedDateTime, 'hh:mm:ss.zzz', myDate);
ShowMessage('hh:mm:ss.zzz = '+formattedDateTime);
// Використання параметрів лише ShortTimeFormat
DateTimeToString(formattedDateTime, 't', myDate);
ShowMessage(' t = '+formattedDateTime);
// Використання параметрів лише LongTimeFormat
DateTimeToString(formattedDateTime, 'tt', myDate);
ShowMessage(' tt = '+formattedDateTime);
// Використання параметрів ShortDateFormat + LongTimeFormat
DateTimeToString(formattedDateTime, 'c', myDate);
ShowMessage(' c = '+formattedDateTime);
end;
Результат
h:m:s.z = 1:2:3.4
hh:mm:ss.zzz = 01:02:03.004
t = 01:02
tt = 01:02:03
c = 09/02/2000 01:02:03
Процедура DateTimeToString: Показ ефекту локальних налаштувань параметрів формату дати
var
myDate : TDateTime;
formattedDateTime : string;
begin
// Встановлення нашої змінної TDateTime повною датою та часом
myDate := StrToDateTime('09/02/49 01:02:03.004');
// Демонстрація параметрів налаштувань регіону за замовчуванням
// Використання значень DateSeparator та TimeSeparator
DateTimeToString(formattedDateTime, 'dd/mm/yy hh:mm:ss', myDate);
ShowMessage('dd/mm/yy hh:mm:ss = '+formattedDateTime);
// Використання ShortMonthNames
DateTimeToString(formattedDateTime, 'mmm', myDate);
ShowMessage(' mmm = '+formattedDateTime);
// Використання LongMonthNames
DateTimeToString(formattedDateTime, 'mmmm', myDate);
ShowMessage(' mmmm = '+formattedDateTime);
// Використання ShortDayNames
DateTimeToString(formattedDateTime, 'ddd', myDate);
ShowMessage(' ddd = '+formattedDateTime);
// Використання LongDayNames
DateTimeToString(formattedDateTime, 'dddd', myDate);
ShowMessage(' dddd = '+formattedDateTime);
// Використання рядка ShortDateFormat
DateTimeToString(formattedDateTime, 'ddddd', myDate);
ShowMessage(' ddddd = '+formattedDateTime);
// Використання рядка LongDateFormat
DateTimeToString(formattedDateTime, 'dddddd', myDate);
ShowMessage(' dddddd = '+formattedDateTime);
// Використання TimeAmString
DateTimeToString(formattedDateTime, 'hhampm', myDate);
ShowMessage(' hhampm = '+formattedDateTime);
// Використання рядка ShortTimeFormat
DateTimeToString(formattedDateTime, 't', myDate);
ShowMessage(' t = '+formattedDateTime);
// Використання рядка LongTimeFormat
DateTimeToString(formattedDateTime, 'tt', myDate);
ShowMessage(' tt = '+formattedDateTime);
// Використання TwoDigitCenturyWindow
DateTimeToString(formattedDateTime, 'dd/mm/yyyy', myDate);
ShowMessage(' dd/mm/yyyy = '+formattedDateTime);
ShowMessage('');
// Тепер змінюємо замовчування
DateSeparator := '-';
TimeSeparator := '_';
ShortDateFormat := 'dd/mmm/yy';
LongDateFormat := 'dddd dd of mmmm of yyyy';
TimeAMString := 'morning';
TimePMString := 'afternoon';
ShortTimeFormat := 'hh:mm:ss';
LongTimeFormat := 'hh : mm : ss . zzz';
ShortMonthNames[2] := 'FEB';
LongMonthNames[2] := 'FEBRUARY';
ShortDayNames[4] := 'WED';
LongDayNames[4] := 'WEDNESDAY';
TwoDigitYearCenturyWindow := 75;
// Встановлення нашої змінної TDateTime в те саме значення, що й раніше
// за винятком того, що ми повинні використовувати нові роздільники дати та часу
// Тільки змінна TwoDigitYearCenturyWindow тут набирає чинності
myDate := StrToDateTime('09-02-49 01_02_03.004');
// Використання значень DateSeparator та TimeSeparator
DateTimeToString(formattedDateTime, 'dd/mm/yy hh:mm:ss', myDate);
ShowMessage('dd/mm/yy hh:mm:ss = '+formattedDateTime);
// Використання ShortMonthNames
DateTimeToString(formattedDateTime, 'mmm', myDate);
ShowMessage(' mmm = '+formattedDateTime);
// Використання LongMonthNames
DateTimeToString(formattedDateTime, 'mmmm', myDate);
ShowMessage(' mmmm = '+formattedDateTime);
// Використання ShortDayNames
DateTimeToString(formattedDateTime, 'ddd', myDate);
ShowMessage(' ddd = '+formattedDateTime);
// Використання LongDayNames
DateTimeToString(formattedDateTime, 'dddd', myDate);
ShowMessage(' dddd = '+formattedDateTime);
// Використання рядка ShortDateFormat
DateTimeToString(formattedDateTime, 'ddddd', myDate);
ShowMessage(' ddddd = '+formattedDateTime);
// Використання рядка LongDateFormat
DateTimeToString(formattedDateTime, 'dddddd', myDate);
ShowMessage(' dddddd = '+formattedDateTime);
// Використання TimeAmString
DateTimeToString(formattedDateTime, 'hhampm', myDate);
ShowMessage(' hhampm = '+formattedDateTime);
// Використання рядка ShortTimeFormat
DateTimeToString(formattedDateTime, 't', myDate);
ShowMessage(' t = '+formattedDateTime);
// Використання рядка LongTimeFormat
DateTimeToString(formattedDateTime, 'tt', myDate);
ShowMessage(' tt = '+formattedDateTime);
// Використання TwoDigitCenturyWindow
DateTimeToString(formattedDateTime, 'dd/mm/yyyy', myDate);
ShowMessage(' dd/mm/yyyy = '+formattedDateTime);
end;
Результат
dd/mm/yy hh:mm:ss = 09/02/49 01:02:03
mmm = Feb
mmmm = February
ddd = Tue
dddd = Tuesday
ddddd = 09/02/2049
dddddd = 09 February 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 = FEB
mmmm = FEBRUARY
ddd = WED
dddd = WEDNESDAY
ddddd = 09-FEB-49
dddddd = WEDNESDAY 09 of FEBRUARY of 1949
hhampm = 01morning
t = 01_02_03
tt = 01 _ 02 _ 03 . 004
dd/mm/yyyy = 09-02-1949
Подібні функції, процедури та команди
DateSeparator — символ використовується для розділення полів дати, що відображається.
DateTimeToStr — конвертує значення дати та часу TDateTime в рядок.
LongDateFormat — переводить довгу версію дати у рядковий формат.
LongDayNames — масив назв днів тижня, починається з 1 = Неділя.
LongMonthNames — масив назв місяців, починається з 1 = Січень.
LongTimeFormat — довга версія часу у рядковому форматі.
ShortDateFormat — компактна версія дати у рядковому форматі.
ShortDayNames — масив назв днів тижня, починаючи з 1 = Неділя.
ShortMonthNames — масив назв днів місяця, починаючи з 1 = Січень.
ShortTimeFormat — коротка версія часу у рядковому формат.
StrToDateTime — конвертує рядок з датою та часом в значення типу TDateTime.
TimeAMString — визначає значення AM в процедурі DateTimeToString.
TimePMString — визначає значення PM в процедурі DateTimeToString.
TimeSeparator — символ, який використовується для розділення полів часу.
TwoDigitYearCenturyWindow — встановлює поріг століття для перетворень рядка року із 2 цифр.
