Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
FormatDateTime
Функция
Богатое форматирование переменной TDateTime в строку SysUtils unit
  
1 function FormatDateTime ( const Formatting : string; DateTime : TDateTime ) : string;

2 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 перед вызовом запроса. Она берёт местную копию глобальной переменной, форматирующей переменные, которые делают подпрограмму потоко-безопасной.
Похожие команды
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 цифр

 
Пример кода : Показ всех типов данных форматирования полей даты
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
 
Пример кода : Показ всех типов форматирования данных полей времени
var
  myDate : TDateTime;

begin
  // Установка нашей переменной TDateTime в полное значение даты и времени:
  // 09/02/2000 в 01:02:03.004  (.004 миллисекунд)
  myDate := EncodeDateTime(2000, 2, 9, 1, 2, 3, 4);

  // Только время - числовые значения без начальных нулей (кроме года)
  ShowMessage('     h:m:s.z = '+FormatDateTime('h:m:s.z', myDate));

  // Только время - числовые значения с начальными нулями
  ShowMessage('hh:mm:ss.zzz = '+FormatDateTime('hh:mm:ss.zzz', myDate));

  // Использование настроек только ShortTimeFormat
  ShowMessage('           t = '+FormatDateTime('t', myDate));

  // Использование настроек только LongTimeFormat
  ShowMessage('          tt = '+FormatDateTime('tt', myDate));

  // Использование настроек ShortDateFormat + LongTimeFormat
  ShowMessage('           c = '+FormatDateTime('c', myDate));
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
 
Пример кода : Показ эффекта местных параметров настроек формата даты
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
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия