DateTimeToStr — Функция Delphi
уЕТЧЕТ РПДДЕТЦЙЧБЕФУС
ЛБЖЕДТПК ЙОЖПТНБФЙЛЙ Й ЧЩЮЙУМЙФЕМШОПК ФЕИОЙЛЙ зТзх
ФЕМ. +375-(0)152-445-101
E-mail : kadan@grsu.grodno.by
уРТБЧПЮОЙЛ РП ЖХОЛГЙСН Delphi. тБВПФБ У ДБФБНЙ Й ЧТЕНЕОЕН
ч Delphi ДМС ИТБОЕОЙС ДБФ Щ Й (ЙМЙ) ЧТЕНЕОЙ РТЕДХУНПФТЕО ЖПТНБФ TDateTime, РТЕДУФБЧМСАЭЙК УПВПК, ОБ УБНПН ДЕМЕ, ПВЩЮОПЕ ЮЙУМП У РМБЧБАЭЕК ФПЮЛПК.
рТЙ ЬФПН ДБФБ РТЕДУФБЧМСЕФУС ГЕМПК ЮБУФША ЮЙУМБ, Б ЧТЕНС ? ДТПВОПК. рТЕЙНХЭЕУФЧП ЬФПЗП РПДИПДБ Ч ФПН, ЮФП ФЕРЕТШ ДБФЩ Й ЧТЕНЕОБ НПЦОП ЛПТТЕЛФОП УЛМБДЩЧБФШ Й ЧЩЮЙФБФШ, ОБРТЙНЕТ:
Справочник по компонентам Delphi. Часть 1
Страница 11. Функции работы с датами и временем
Функции работы с датами и временем
В Delphi для хранения дать! и (или) времени предусмотрен формат TDateTime, представляющий собой, на самом деле, обычное число с плавающей точкой.
При этом дата представляется целой частью числа, а время — дробной. Преимущество этого подхода в том, что теперь дать! и времена можно корректно складывать и вычитать, например:
procedure TFormI.PormCreate(Sender: TObject);
Функции этой группы приведены в таблице:
function EncodeDate(Year, Month, Day: Word): TDateTime;
Преобразует дату, заданную раздельно годом, месяцем и днем, в формат TDateTime. Если они выходят за допустимые пределы, возникает ИС EConvertError.
procedure DecodeDatefDate: TDateTime; var Year, Month, Day: Word);
Преобразует дату в виде TDateTime к раздельным составляющим: году, месяцу и дню.
function EncodeTimefHour, Min, Sec, MSec: Word):
Преобразует значение времени, заданное часом, минутой, секундой и миллисекундой в формат TDateTime.
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) ;
Преобразует значение времени в формате TDateTime в раздельные составляющие: час, минуту, секунду и миллисекунду.
function DayOfWeektDate: TDateTime): Integer;
Возвращает номер текущего дня недели от 1 (воскресенье) до 7 (суббота).
Возвращает текущую дату.
Возвращает текущее время.
Возвращает текущие дату и время.
function DateToStr(Date: TDateTime): string;
Преобразует дату Date в текстовую строку.
function TimeToStr(Time: TDateTime): string;
Преобразует время из типа TDateTime в текстовую строку.
function DateTimeToStr(DateTime: TDateTime): string;
Преобразует дату и время из типа TDateTime в текстовую строку.
function StrToDatefconst S: string): TDateTime;
Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat.
function StrToTime(const S: string): TDateTime;
Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS — может принимать значения ‘AM’ или ТМ’, иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опускается. Если преобразование невозможно, возникает ИС EConvertError.
StrToDateTime(const S: string): TDateTime;
Преобразует текстовую строку S в дату и время в формате MM/DD/YY HH:NN:SS (элемент SS см. выше).
function FormatDateTime(const Format: string; DateTime: TdateTime): string;
Преобразует дату и время из типа TDateTime в текстовую строку, используя формат, задаваемый параметром Format (см. примеч. 1).
procedure DateTimeToStringfvar Result: string; const Format: string; DateTime: TDateTime);
Преобразует дату и время типа TDateTime в строку Result, используя формат, передаваемый параметром Format (см. примеч. 1).
1. Правила задания спецификатора формата для даты и времени отличаются от рассмотренных выше. В первую очередь надо иметь в виду то, что функции вроде FormatDateTime оперируют над одним значением TDateTime, а спецификаторы формата извлекают из него те или иные составные части. При этом могут использоваться:
Отображает дату, используя формат ShortDateFormat, затем отображается время в формате LongTimeFormat. Время не отображается, если дробная часть переменной DateTime нулевая.
Отображает число месяца без нуля в левом разряде (1-31).
Отображает число месяца с нулем в левом разряде (01-31).
Отображает день недели в соответствии с сокращенными именами из переменной ShortDayNames.
Отображает день недели в соответствии с полными именами из переменной LongDayNames.
Отображает дату в соответствии с форматом ShortDateFormat.
Отображает дату в соответствии с форматом LongDateFormat.
Отображает месяц как число без нуля в левом разряде (1-12).
Отображает месяц как число с нулем в левом разряде (01-12).
Отображает месяц в соответствии с сокращенными именами из переменной ShortMonthNames.
Отображает месяц в соответствии с полными именами из переменной Long MonthN am es.
Отображает год двумя цифрами.
Отображает год четырьмя цифрами.
Отображает час как число без нуля в левом разряде (0-23).
Отображает час как число с нулем в левом разряде (00-23).
Отображает минуты как число без нуля в левом разряде (0-59).
Отображает минуты как число с нулем в левом разряде (00-59).
Отображает секунды как число без нуля в левом разряде (0-59).
Отображает секунды как число с нулем в левом разряде (00-59).
Отображает время в соответствии с форматом ShortTimeFormat.
Отображает время в соответствии с форматом LongTimeFormat.
Отображает время в 12-часовой шкале. ‘AM’ означает часы до полудня, ‘РМ’ — часы после полудня.
Отображает время в 12-часовой шкале. При этом для времени до полудня отображается содержимое переменной TimeAMString, а после полудня — TimePMString.
Отображает время в 12-часовой шкале, ‘а’ означает часы до полудня, ‘р’ — часы после полудня.
Отображает символ — разделитель даты, содержащийся в переменной DataSeparator.
Отображает символ — разделитель времени, содержащийся в переменной TimeSeparator.
Символы, заключаемые в простые или двойные кавычки, отображаются как есть и не подвергаются форматированию.
Например, результатом вызова функции с параметрами
FormatDateTime (‘ «Совещание состоится в» dddd, dirrmim, yyyy, ‘ + ‘ «в» hh:nn’, StrToDateTime(’12/31/95 23:55′)) ;
будет строка ‘Совещание состоится в среду, 31 декабря 1995 в 23:55’ (естественно, если вы переопределили значения элементов массива LongMonth-Names).
3. Спецификаторы могут быть указаны как в верхнем, так и в нижнем регистрах символов — это не играет роли.
Клуб программистов
Delphi programming
Подписаться на рассылку:
DateTimeToString
огромные возможности форматирования даты в строку
|| 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 ) ;
Описание:
Delphi процедура DateTimeToString позволяет форматировать дату и время, и в нужном формате даты и времени DateTime ( тип TDateTime ) переводить в строку. Т.е Delphi процедура DateTimeToString позволяет форматировать и время и дату.
Форматирование строки может включать смешивание обычных символов ( дата будет переведена в строку именно так, как укажет пользователь). Пример форматирования хорошо представлен в «Пример кода».
Следующее (не-Азиатское) символы формата даты могут быть использованы:
y = Year last 2 digits
yy = Year last 2 digits
yyyy = Year as 4 digits
m = Month number no-leading 0
mm = Month number as 2 digits
mmm = Month using ShortDayNames (Jan)
mmmm = Month using LongDayNames (January)
d = Day number no-leading 0
dd = Day number as 2 digits
ddd = Day using ShortDayNames (Sun)
dddd = Day using LongDayNames (Sunday)
ddddd = Day in ShortDateFormat
dddddd = Day in LongDateFormat
c = Use ShortDateFormat + LongTimeFormat
h = Hour number no-leading 0
hh = Hour number as 2 digits
n = Minute number no-leading 0
nn = Minute number as 2 digits
s = Second number no-leading 0
ss = Second number as 2 digits
z = Milli-sec number no-leading 0s
zzz = Milli-sec number as 3 digits
t = Use ShortTimeFormat
tt = Use LongTimeFormat
am/pm = Use after h : gives 12 hours + am/pm
a/p = Use after h : gives 12 hours + a/p
ampm = As a/p but TimeAMString,TimePMString
/ = Substituted by DateSeparator value
: = Substituted by TimeSeparator value
Значения использующиеся по умолчанию.
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
Пример кода:
var
myDate : TDateTime;
formattedDateTime : string;
begin
// Set up our TDateTime variable with a full date and time :
// 09/02/2000 at 01:02:03.004 (.004 milli-seconds)
myDate := EncodeDateTime(2000, 2, 9, 1, 2, 3, 4);
// Date only — numeric values with no leading zeroes (except year)
DateTimeToString(formattedDateTime, ‘d/m/y’, myDate);
ShowMessage(‘ d/m/y = ‘+formattedDateTime);
// Date only — numeric values with leading zeroes
DateTimeToString(formattedDateTime, ‘dd/mm/yy’, myDate);
ShowMessage(‘ dd/mm/yy = ‘+formattedDateTime);
// Use short names for the day, month, and add freeform text (‘of’)
DateTimeToString(formattedDateTime, ‘ddd d of mmm yyyy’, myDate);
ShowMessage(‘ ddd d of mmm yyyy = ‘+formattedDateTime);
// Use long names for the day and month
DateTimeToString(formattedDateTime, ‘dddd d of mmmm yyyy’, myDate);
ShowMessage(‘dddd d of mmmm yyyy = ‘+formattedDateTime);
// Use the ShortDateFormat settings only
DateTimeToString(formattedDateTime, ‘ddddd’, myDate);
ShowMessage(‘ ddddd = ‘+formattedDateTime);
// Use the LongDateFormat settings only
DateTimeToString(formattedDateTime, ‘dddddd’, myDate);
ShowMessage(‘ dddddd = ‘+formattedDateTime);
// Use the ShortDateFormat + LongTimeFormat settings
DateTimeToString(formattedDateTime, ‘c’, myDate);
ShowMessage(‘ c = ‘+formattedDateTime);
end;
Результат выполнения:
Пример кода:
var
myDate : TDateTime;
formattedDateTime : string;
begin
// Set up our TDateTime variable with a full date and time :
// 09/02/2000 at 01:02:03.004 (.004 milli-seconds)
myDate := EncodeDateTime(2000, 2, 9, 1, 2, 3, 4);
// Time only — numeric values with no leading zeroes
DateTimeToString(formattedDateTime, ‘h:m:s.z’, myDate);
ShowMessage(‘ h:m:s.z = ‘+formattedDateTime);
// Time only — numeric values with leading zeroes
DateTimeToString(formattedDateTime, ‘hh:mm:ss.zzz’, myDate);
ShowMessage(‘hh:mm:ss.zzz = ‘+formattedDateTime);
// Use the ShortTimeFormat settings only
DateTimeToString(formattedDateTime, ‘t’, myDate);
ShowMessage(‘ t = ‘+formattedDateTime);
// Use the LongTimeFormat settings only
DateTimeToString(formattedDateTime, ‘tt’, myDate);
ShowMessage(‘ tt = ‘+formattedDateTime);
// Use the ShortDateFormat + LongTimeFormat settings
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
// Set up our TDateTime variable with a full date and time
myDate := StrToDateTime(’09/02/49 01:02:03.004′);
// Demonstrate default locale settings
// Use the DateSeparator and TimeSeparator values
DateTimeToString(formattedDateTime, ‘dd/mm/yy hh:mm:ss’, myDate);
ShowMessage(‘dd/mm/yy hh:mm:ss = ‘+formattedDateTime);
// Use ShortMonthNames
DateTimeToString(formattedDateTime, ‘mmm’, myDate);
ShowMessage(‘ mmm = ‘+formattedDateTime);
// Use LongMonthNames
DateTimeToString(formattedDateTime, ‘mmmm’, myDate);
ShowMessage(‘ mmmm = ‘+formattedDateTime);
// Use ShortDayNames
DateTimeToString(formattedDateTime, ‘ddd’, myDate);
ShowMessage(‘ ddd = ‘+formattedDateTime);
// Use LongDayNames
DateTimeToString(formattedDateTime, ‘dddd’, myDate);
ShowMessage(‘ dddd = ‘+formattedDateTime);
// Use the ShortDateFormat string
DateTimeToString(formattedDateTime, ‘ddddd’, myDate);
ShowMessage(‘ ddddd = ‘+formattedDateTime);
// Use the LongDateFormat string
DateTimeToString(formattedDateTime, ‘dddddd’, myDate);
ShowMessage(‘ dddddd = ‘+formattedDateTime);
// Use the TimeAmString
DateTimeToString(formattedDateTime, ‘hhampm’, myDate);
ShowMessage(‘ hhampm = ‘+formattedDateTime);
// Use the ShortTimeFormat string
DateTimeToString(formattedDateTime, ‘t’, myDate);
ShowMessage(‘ t = ‘+formattedDateTime);
// Use the LongTimeFormat string
DateTimeToString(formattedDateTime, ‘tt’, myDate);
ShowMessage(‘ tt = ‘+formattedDateTime);
// Use the TwoDigitCenturyWindow
DateTimeToString(formattedDateTime, ‘dd/mm/yyyy’, myDate);
ShowMessage(‘ dd/mm/yyyy = ‘+formattedDateTime);
// Now change the defaults
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;
// Set up our TDateTime variable with the same value as before
// except that we must use the new date and time separators
// The TwoDigitYearCenturyWindow variable only takes effect here
myDate := StrToDateTime(’09-02-49 01_02_03.004′);
// Use the DateSeparator and TimeSeparator values
DateTimeToString(formattedDateTime, ‘dd/mm/yy hh:mm:ss’, myDate);
ShowMessage(‘dd/mm/yy hh:mm:ss = ‘+formattedDateTime);
// Use ShortMonthNames
DateTimeToString(formattedDateTime, ‘mmm’, myDate);
ShowMessage(‘ mmm = ‘+formattedDateTime);
// Use LongMonthNames
DateTimeToString(formattedDateTime, ‘mmmm’, myDate);
ShowMessage(‘ mmmm = ‘+formattedDateTime);
// Use ShortDayNames
DateTimeToString(formattedDateTime, ‘ddd’, myDate);
ShowMessage(‘ ddd = ‘+formattedDateTime);
// Use LongDayNames
DateTimeToString(formattedDateTime, ‘dddd’, myDate);
ShowMessage(‘ dddd = ‘+formattedDateTime);
// Use the ShortDateFormat string
DateTimeToString(formattedDateTime, ‘ddddd’, myDate);
ShowMessage(‘ ddddd = ‘+formattedDateTime);
// Use the LongDateFormat string
DateTimeToString(formattedDateTime, ‘dddddd’, myDate);
ShowMessage(‘ dddddd = ‘+formattedDateTime);
// Use the TimeAmString
DateTimeToString(formattedDateTime, ‘hhampm’, myDate);
ShowMessage(‘ hhampm = ‘+formattedDateTime);
// Use the ShortTimeFormat string
DateTimeToString(formattedDateTime, ‘t’, myDate);
ShowMessage(‘ t = ‘+formattedDateTime);
// Use the LongTimeFormat string
DateTimeToString(formattedDateTime, ‘tt’, myDate);
ShowMessage(‘ tt = ‘+formattedDateTime);
// Use the 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
Как правильно работать с датой и временем
Работа с Датой и Временем
Всем привет, помогите решить задачи с датой и временем, ни когда не с сталкивался еще с этим и не.
Работа с датой и временем
ребят. к примеру есть у меня переменная типа дата-время: str:=’12.03.2011 12:23:54′;.
Работа с датой и временем(калькулятор)
Задание: Организовать проект «Калькулятор времени». Вывести на экран текущую дату, а также время(в.
Работа с Датой и Временем. Delphi 7
Подскажите пожалуйста! В ячейке таблицы есть поле со временем длительности. В нем могут.
Сохранение файла с датой и временем в названии
Нужно сохранить текст из Memo1 в текстовый документ, имя которого будет дата и время сохранения .
Решение
то что вы предлагаете, это неудобно, там нужно складывать часы, дни, месяцы, учитывать сколько дней в месяце ,месяцев в году и тд. а в unixtime достаточно сложить два числа и все.Для тех кто в танке: unix time это кол-во секунд прошедших с 01.01.1970, в дельфе есть аналог, но там только кл-во дней прошедших с 1900 года.а мне нужны месяца, дни, часы,минуты, секунды
Нашел, вот ф-ия преобразующая unixtime и TDateTime в обе стороны
Сделать так, чтобы папка сохранялась с датой и временем в названии
Помогите! не могу понять как в Delphi7 сделать так чтоб папка создавалась с названием даты и время.
Как правильно работать с таблицами Word
Здравствуйте, помогите решить проблему. Строка после таблицы помещается в ее первую ячейку. Как.
Как работать в Perl с датой и временем?
как работать в Perl с датой и временем которые я получаю из MySql, например: как получить.
DateTimeToStr — Функция Delphi
При задании значения даты-времени следует обратить внимание не только на сами значения, но и на знаки препинания. Несущественные части даты-времеи (например, секунды, минуты, часы) можно справа отбросить. В этом случае считается, что соответствующая часть равна нулю. Если в дате-времени отброшено еще и значение года, считается, что имеется в виду текущий год. Обычно тип дата-время используется в параметрах вариантного типа как один из допустимых вариантов, но может использоваться и самостоятельно для фиксации информации о времени.
Примечание. Следует иметь в виду, что при записи года двумя последними цифрами фактический год зависит от текущего года и глобальной переменной заданной в Delphi — TwoDigitYearCenturyWindow. По умолчанию эта переменная имеет значение, равное 50, что означает, что в конце этого столетия и начале следующего задаваемые двумя цифрами годы будут относиться к XX в., если число несколько больше 50, и к XXI в., если число несколько меньше 50.
В модуле SysUtils определен ряд стандартных функции работы с параметрами типа даты-времени.
- Time — текущее время. Функция возвращает текущее значение времени в формате TTime.
- Date — текущая дата. Функция возвращает текущее значение даты в формате TDate.
- Now — текущая дата и время. Функция возвращает текущее значение даты и времени в формате TDateTime.
- DateTimeToStr (DateTime) — символьное представление даты и времени. Функция формирует для параметра DateTime типа TDateTime символьное представление даты и времени с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
- DateTimeToString (Result, Format, DateTime) — сформатированное символьное представление даты и времени. Процедура формирует символьное представление параметра DateTime типа TDateTime с учетом формата, заданного строкой Format, и помещает результат в строку Result.
- DateToStr (Date) — символьное представление даты. Функция формирует для параметра Date типа TDateTime или TDate символьное представление даты с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
- DayOfWeek (Date) — день недели. Функция возвращает день недели заданной даты Date типа TDateTime или TDate в виде числа от 1 до 7, причем нумерация начинается с воскресенья.
- TimeToStr (Time) — символьное представление времени. Функция формирует для параметра Time типа TDateTime или TTime символьное представление времени с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
- DecodeDate (Date, Year, Month, Day) — выделение в дате года, месяца, дня. Процедура выделяет из параметра Date типа TDateTime или TDate год, месяц, день и помещает их соответственно в параметры Year, Month и Day типа Word.
- DecodeTime (Date, Hour, Min, Sec, MSec) — выделение во времени часа, минуты, секунды и числа миллисекунд. Процедура выделяет из параметра Date типа TDateTime или TTime час, минуту, секунду и число миллисекунд и помещает их соответственно в параметры Hour, Min, Sec и MSec типа Word.
- EncodeDate (Year, Month, Day) — формирование даты из компонент. Функция формирует из заданного года, месяца и дня (заданных в параметрах Year, Month, Day) комплексный параметр типа TDateTime и возвращает его как результат работы.
- EncodeTime (Hour, Min, Sec, MSec) — формирование времени из компонент. Функция формирует из заданных часа, минуты, секунды и числа миллисекунд (заданных в параметрах Hour, Min, Sec, MSec) комплексный параметр типа TDateTime и возвращает его как результат работы.
- FormatDateTime (Format, DateTime) — сформатированное символьное представление даты и времени. Функция формирует символьное представление параметра DateTime типа TDateTime с учетом формата, заданного строкой Format, и возвращает полученную строку как результат своей работы.
- StrToDate (S) — преобразование символьного представления даты в тип TDateTime. Функция преобразовывает символьное представление даты, находящееся в строке S, в формат TDateTime или TDate и возвращает полученную величину как результат своей работы. Дата должна быть задана в соответствии с региональной установкой Windows.
- StrToTime (S) — преобразование символьного представления времени в тип TDateTime. Функция преобразовывает символьное представление времени, находящееся в строке S, в формат TDateTime или TTime и возвращает полученную величину как результат своей работы. Время должно быть задано в соответствии с региональной установкой Windows.
- StrToDateTime (S) — преобразование символьного представления даты и времени в тип TDateTime. Функция преобразовывает символьное представление даты и времени, находящееся в строке S, в формат TDateTime и возвращает полученную величину как результат своей работы. Дата и время должны быть заданы в соответствии с региональной установкой Windows.
Тепеть разберем некоторые функции на примерах.
DateTimeToString |
DateTimeToStr |
DateToStr |
TimeToStr |
А сейчас попробуем написать часы, применяя описанные выше процедуры и функции. С созданием цифровых часов не должно возникнуть никаких проблем, а вот с аналоговыми нужно повозиться. Но мы, как настоящие программисты, не боимся трудностей, и возьмемся за реализацию этой задачи. И первое, что мы сделаем при запуске программы, узнаем координаты центра часов и вычислим радиус.
Обновлять информацию о времени будем, используя таймер, и сделаем возможность запуска/остановки часов. Запускать и останавливать таймер будем следующей процедурой.
Таймер, через определенные интервалы времени, будет получать информацию о дате и времени, выводить ее, и вызывать процедуру рисования аналоговых часов.
А вот и сама процедура рисования аналоговых часов.
Из примера видно, что сделать часы, в том числе и аналоговые, не представляет из себя ничего сложного. Я думаю, не возникнет больших проблем при разборе данного примера.
Процедуры и функции преобразования дат и времени
CurrentYear: Word;
Возвращает полное обозначение (четыре цифры) текущего года.
Date : TDateTime
Возвращает текущую дату.
DateOf(const AValue: TDateTime): TDateTime
Выделяет из AValue только часть, связанную датой, обнуляя время.
DateTimeToFileDate(DateTime: TDateTime): Integer
Преобразует дату и время TDateTime в формат операционной системы, используемый при задании времени создания и модификации файлов.
DateTimeToSQLTimeStamp(const DateTime: TDateTime): TSQLTimeStamp
Преобразует дату и время TDateTime в формат TSQLTimeStamp .
DateTimeToStr (DateTime: TDateTime): string
Преобразует дату и время DateTime в строку.
DateTimeToString fvar Result: string; const Format: string;
DateTime: TDateTime)
Преобразует DateTime с помощью строки форматирования Format в строку Result.
DateTimeToSystemTime(DateTime: TDateTime;
var SystemTime: TSystemTime)
Преобразует DateTime типа TDateTime в тип TSystemTime . Используемый в API Windows 32.
DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp Преобразует DateTime типа TDateTime в тип TTimeStamp .
DateToStr(Date: TDateTime): string
Преобразует дату DateTime в строку, используя формат, заданный глобальной переменной ShortDateFormat.
DayOf f(const AValue: TDateTime): Word
Извлекает день месяца из даты AValue типа TDateTime. Идентична функ ции DavOfTheMonth.
DayOfTheMonth f(const AValue: TDateTime): Word
Извлекает день месяца из даты AValue типа TDateTime. Идентична функции DayOf .
DayOfTheWeek(const AValue: TDateTime): Word
Возвращает день недели (1 — понедельник, 7 — воскресенье).
DayOfTheYear(const AValue: TDateTime): Word;
Возвращает число дней между датой AValue и 31 декабря предыдущего года.
DayOfWeek (Date: TDateTime): Integer
Возвращает день неде ли (1 — воскресенье, 7 — суббота).
DaysBetween f(const ANow, AThen: TDateTime): Integer
Возвращает число полных суток между двумя указанными датами ANow и AThen типа TDateTime.
DaysInAMonth(const AYear, AMonth: Word): Word
Возвращает число дней в указанном месяце AMonth в указанном году AYear.
DaysInYear(const AValue: TDateTime): Word
Возвращает число дней в году, к которому относится указанная дата AValue.
DaySpan (const ANow, AThen: TDateTime): Double
Возвращает действительное число, равное числу суток между двумя указанными датами ANow и AThen типа TDateTime, учитывая неполные сутки. В этом отличие данной функции от DaysBetween.
DecodeDate (Date: TDateTime; var Year, Month, Day: Word)
Разбивает дату Date на год — Year, месяц — Month и день — Day.
DecodeDateDay(const AValue: TDateTime; out AYear, ADayOfYear: Word)
Возвращает год AYear, к которому относится дата AValue, и число дней ADayOfYear в этом году.
DecodeDateFully(const DateTime: TDateTime; var Year, Month, Day,
DOW: Word): Boolean
Выделяет из даты DateTime год Year, месяц Month, день Day, день недели DOW. Если год високосный, возвращается true.
DecodeDateMonthWeek(const AValue: TDateTime;
out AYear, AMonth, AWeekOfMonth, ADayOfWeek: Word)
Возвращает год AYear, месяц AMonth, неделю месяца AWeekOfMonth, день недели ADayOfWeek (1 — понедельник) даты AValue.
DecodeDateTime(const AValue: TDateTime; out AYear, AMonth, ADay,
AHour, AMinute, ASecond, AMilliSecond: Word)
Возвращает год AYear, месяц AMonth, день ADay, час AHour, минуту AMinute, секунду ASecond, число миллисекунд AMilliSecond указанной даты и времени AValue.
DecodeDateWeek(const AValue: TDateTime;
out AYear, AWeekOfYear, ADayOfWeek: Word)
Возвращает год AYear, неделю года AWeekOfYear и день недели ADayOfWeek (1 — понедельник) указанной даты AValue.
DecodeDayOfWeekInMonth(const AValue: TDateTime;
out AYear, AMonth, ANthDayOfWeek, ADayOfWeek: Word)
Возвращает год AYear, месяц AMonth, который раз ANthDayOfWeek встречается в месяце данный день недели, день недели ADayOfWeek (1 — понедельник).
DecodeTime (Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Разбивает время Time на час — Hour, минуту — Min, секунду — Sec, миллисекунду — MSec.
EncodeDate fYear. Month, Day: Word): TDateTime
Объединяет год Year, месяц Month и день Day в значение типа TDateTime.
EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime
Формирует значение TDateTime по заданному году AYear и дню года ADayOfYear .
EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth: Word;
const ADayOfWeek: Word = 1): TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, неделе месяца AWeekOfMonth и дню недели ADayOfWeek.
EncodeDateTime(const AYear, AMonth, ADay, AHour,
AMinute, ASecond, AMilliSecond: Word):TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, дню ADay, часу AHour, минуте AMinute, секунде ASecond, миллисекунде AMilliSecond.
EncodeDateWeek(const, AWeekOfYear: Word;
const ADayOfWeek: Word =1): TDateTime
Формирует значение TDateTime по заданному году AYear и указанному дню ADayOfWeek указанной недели AWeekOfYear.
EncodeDayOfWeekInMonth(const AYear, AMonth,
ANthDayOfWeek, ADayOfWeek: Word): TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, дню недели ADayOfWeek и тому, который раз ANthDayOfWeek
этот день встречается в данном месяце.
EncodcTime (Hour. Min, Sec, MSec: Word): TDateTime
Объединяет час Hour, минуту Min, секунду Sec и миллисекунду MSec
в значение типа TDateTime.
EndOfADay(const AYear, ADayOfYear: Word): TDateTime
Возвращает время окончания указанного дня ADayOfYear указанного года AYear.
EndOfADay(const AYear, AMonth, ADay: Word): TDateTime
Возвращает время окончания указанного дня ADay указанного месяца AMonth указанного года AYear.
EndOfAMonth(const AYear, AMonth: Word): TDateTime
Возвращает время окончания последнего дня указанного месяца AMonth указанного года AYear.
EndOfAWeek(const AYear, AWeekOfYear: Word;
const ADayOfWeek: Word = 7): TDateTime
Возвращает время окончания указанного дня ADayOfWeek указанной недели AWeekOfYear указанного года AYear.
EndOfAYear(const AYear): TDateTime
Возвращает время окончания указанного года AYear.
EndOfTheDay(const AValue: TDateTime): TDateTime
Возвращает время окончания указанной даты AValue.
EndOfTheMonth(const AValue: TDateTime): TDateTime
Возвращает время окончания месяца, содержащего указанную дату AValue.
EndOfTheWeek(const AValue: TDateTime): TDateTime
Возвращает время окончания недели, содержащей указанную дату
AValue. EndOfTheYear(const AValue: TDateTime): TDateTime
Возвращает время окончания года, содержащего указанную дату
AValue. FormatDateTime (const Format: string; DateTime: TDateTime): string
Возвращает значение DateTime, преобразованное в строку с помощью строки форматирования Format.
. delphi отображать текущую дату delphi функции даты функция даты и времени паскаль c# преобразовать дату delphi дата и время
Delphi: DateTimeToStr output with zero time (m > Ask Question
I have found a similar question here, but it is unrelated to what I am trying to do. I have done a lot of research on the Internet and I have determined that Delphi is working as designed or intended, where it omits the time if the time is zero. I have an application which displays the date & time in a listview, and when the time is midnight, it doesn’t show 00:00:00, and therefore making the results look uneven and out of place.
The way I’ve gotten around this which is still locale independant is to add a microsecond to the time, see sample code:
And subsequent output:
The question is — is there a better, more programatically correct way to do achieve this?
DateTimeToStr Routine
Unit Edit
Description Edit
Definition (Delphi 6):
Definition (Delphi 2007, 2010):
Technical Comments Edit
(Known issues / Documentation clarifications / Things to be aware of)
Examples Edit
(Please provide links to articles/source code that show how to use this item.)
See Also Edit
(Please provide links to items specifically related to this item.)
User Comments/Tips Edit
(Please leave your name with your comment.)
Процедуры и функции преобразования дат и времени
CurrentYear: Word;
Возвращает полное обозначение (четыре цифры) текущего года.
Date : TDateTime
Возвращает текущую дату.
DateOf(const AValue: TDateTime): TDateTime
Выделяет из AValue только часть, связанную датой, обнуляя время.
DateTimeToFileDate(DateTime: TDateTime): Integer
Преобразует дату и время TDateTime в формат операционной системы, используемый при задании времени создания и модификации файлов.
DateTimeToSQLTimeStamp(const DateTime: TDateTime): TSQLTimeStamp
Преобразует дату и время TDateTime в формат TSQLTimeStamp .
DateTimeToStr (DateTime: TDateTime): string
Преобразует дату и время DateTime в строку.
DateTimeToString fvar Result: string; const Format: string;
DateTime: TDateTime)
Преобразует DateTime с помощью строки форматирования Format в строку Result.
DateTimeToSystemTime(DateTime: TDateTime;
var SystemTime: TSystemTime)
Преобразует DateTime типа TDateTime в тип TSystemTime . Используемый в API Windows 32.
DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp Преобразует DateTime типа TDateTime в тип TTimeStamp .
DateToStr(Date: TDateTime): string
Преобразует дату DateTime в строку, используя формат, заданный глобальной переменной ShortDateFormat.
DayOf f(const AValue: TDateTime): Word
Извлекает день месяца из даты AValue типа TDateTime. Идентична функ ции DavOfTheMonth.
DayOfTheMonth f(const AValue: TDateTime): Word
Извлекает день месяца из даты AValue типа TDateTime. Идентична функции DayOf .
DayOfTheWeek(const AValue: TDateTime): Word
Возвращает день недели (1 — понедельник, 7 — воскресенье).
DayOfTheYear(const AValue: TDateTime): Word;
Возвращает число дней между датой AValue и 31 декабря предыдущего года.
DayOfWeek (Date: TDateTime): Integer
Возвращает день неде ли (1 — воскресенье, 7 — суббота).
DaysBetween f(const ANow, AThen: TDateTime): Integer
Возвращает число полных суток между двумя указанными датами ANow и AThen типа TDateTime.
DaysInAMonth(const AYear, AMonth: Word): Word
Возвращает число дней в указанном месяце AMonth в указанном году AYear.
DaysInYear(const AValue: TDateTime): Word
Возвращает число дней в году, к которому относится указанная дата AValue.
DaySpan (const ANow, AThen: TDateTime): Double
Возвращает действительное число, равное числу суток между двумя указанными датами ANow и AThen типа TDateTime, учитывая неполные сутки. В этом отличие данной функции от DaysBetween.
DecodeDate (Date: TDateTime; var Year, Month, Day: Word)
Разбивает дату Date на год — Year, месяц — Month и день — Day.
DecodeDateDay(const AValue: TDateTime; out AYear, ADayOfYear: Word)
Возвращает год AYear, к которому относится дата AValue, и число дней ADayOfYear в этом году.
DecodeDateFully(const DateTime: TDateTime; var Year, Month, Day,
DOW: Word): Boolean
Выделяет из даты DateTime год Year, месяц Month, день Day, день недели DOW. Если год високосный, возвращается true.
DecodeDateMonthWeek(const AValue: TDateTime;
out AYear, AMonth, AWeekOfMonth, ADayOfWeek: Word)
Возвращает год AYear, месяц AMonth, неделю месяца AWeekOfMonth, день недели ADayOfWeek (1 — понедельник) даты AValue.
DecodeDateTime(const AValue: TDateTime; out AYear, AMonth, ADay,
AHour, AMinute, ASecond, AMilliSecond: Word)
Возвращает год AYear, месяц AMonth, день ADay, час AHour, минуту AMinute, секунду ASecond, число миллисекунд AMilliSecond указанной даты и времени AValue.
DecodeDateWeek(const AValue: TDateTime;
out AYear, AWeekOfYear, ADayOfWeek: Word)
Возвращает год AYear, неделю года AWeekOfYear и день недели ADayOfWeek (1 — понедельник) указанной даты AValue.
DecodeDayOfWeekInMonth(const AValue: TDateTime;
out AYear, AMonth, ANthDayOfWeek, ADayOfWeek: Word)
Возвращает год AYear, месяц AMonth, который раз ANthDayOfWeek встречается в месяце данный день недели, день недели ADayOfWeek (1 — понедельник).
DecodeTime (Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Разбивает время Time на час — Hour, минуту — Min, секунду — Sec, миллисекунду — MSec.
EncodeDate fYear. Month, Day: Word): TDateTime
Объединяет год Year, месяц Month и день Day в значение типа TDateTime.
EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime
Формирует значение TDateTime по заданному году AYear и дню года ADayOfYear .
EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth: Word;
const ADayOfWeek: Word = 1): TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, неделе месяца AWeekOfMonth и дню недели ADayOfWeek.
EncodeDateTime(const AYear, AMonth, ADay, AHour,
AMinute, ASecond, AMilliSecond: Word):TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, дню ADay, часу AHour, минуте AMinute, секунде ASecond, миллисекунде AMilliSecond.
EncodeDateWeek(const, AWeekOfYear: Word;
const ADayOfWeek: Word =1): TDateTime
Формирует значение TDateTime по заданному году AYear и указанному дню ADayOfWeek указанной недели AWeekOfYear.
EncodeDayOfWeekInMonth(const AYear, AMonth,
ANthDayOfWeek, ADayOfWeek: Word): TDateTime
Формирует значение TDateTime по заданному году AYear, месяцу AMonth, дню недели ADayOfWeek и тому, который раз ANthDayOfWeek
этот день встречается в данном месяце.
EncodcTime (Hour. Min, Sec, MSec: Word): TDateTime
Объединяет час Hour, минуту Min, секунду Sec и миллисекунду MSec
в значение типа TDateTime.
EndOfADay(const AYear, ADayOfYear: Word): TDateTime
Возвращает время окончания указанного дня ADayOfYear указанного года AYear.
EndOfADay(const AYear, AMonth, ADay: Word): TDateTime
Возвращает время окончания указанного дня ADay указанного месяца AMonth указанного года AYear.
EndOfAMonth(const AYear, AMonth: Word): TDateTime
Возвращает время окончания последнего дня указанного месяца AMonth указанного года AYear.
EndOfAWeek(const AYear, AWeekOfYear: Word;
const ADayOfWeek: Word = 7): TDateTime
Возвращает время окончания указанного дня ADayOfWeek указанной недели AWeekOfYear указанного года AYear.
EndOfAYear(const AYear): TDateTime
Возвращает время окончания указанного года AYear.
EndOfTheDay(const AValue: TDateTime): TDateTime
Возвращает время окончания указанной даты AValue.
EndOfTheMonth(const AValue: TDateTime): TDateTime
Возвращает время окончания месяца, содержащего указанную дату AValue.
EndOfTheWeek(const AValue: TDateTime): TDateTime
Возвращает время окончания недели, содержащей указанную дату
AValue. EndOfTheYear(const AValue: TDateTime): TDateTime
Возвращает время окончания года, содержащего указанную дату
AValue. FormatDateTime (const Format: string; DateTime: TDateTime): string
Возвращает значение DateTime, преобразованное в строку с помощью строки форматирования Format.
. delphi отображать текущую дату delphi функции даты функция даты и времени паскаль c# преобразовать дату delphi дата и время
delphi — Delphi: выход DateTimeToStr с нулевым временем (полночь)
Я нашел аналогичный вопрос здесь, но это не имеет никакого отношения к тому, что я пытаюсь сделать. Я провел много исследований в Интернете, и я решил, что Delphi работает как спроектированный или предназначенный, где он пропускает время, если время равно нулю. У меня есть приложение, которое отображает дату и время в списке, а когда время полночь, оно не показывает 00:00:00, и поэтому результаты выглядят неравномерно и неуместно.
То, как я обошел это, которое по-прежнему не зависит от локали, состоит в том, чтобы добавить микросекунду к моменту времени, см. Пример кода:
И последующий вывод:
Вопрос в том, есть ли лучший, более программно правильный способ добиться этого?
Запуск Delphi XE6
-
4 2
- 26 апр 2020 2020-04-26 01:05:51
- KeyszerS
2 ответа
Это «нормальное» поведение VCL. Посмотрите на связанный код System.SysUtils (это из Сиэтла, но я думаю, что он не сильно изменился с XE6).
Если временная часть значения datetime равна нулю, то в результирующей строке будет только дата.
Если вы хотите всегда показывать дату и время в одном формате, лучше используйте FormatDateTime как предложено другими ответами.
- 26 апр 2020 2020-04-26 01:05:52
- Andrew
Вы можете использовать функцию FormatDateTime для большего контроля за форматированием даты.