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
DateTimeToString
Процедура
Огромные возможности форматирования даты в строку SysUtils unit
  
1 procedure DateTimeToString ( var Result : string; const Formatting : string; DateTime : TDateTime ) ;

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

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


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия