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
 



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