Типы, функции и процедуры Delphi для работы с датой и временем.
Содержание:
Функции и процедуры Delphi для работы с датой и временем.
Тип TDateTime.
Тип TTimeStamp.
Тип TSQLTimeStamp.
Функции и процедуры Delphi для работы с датой и временем.
Наименование | Вид модуль | Описание |
---|---|---|
CheckSqlTimeStamp | процедура SqlTimSt | Проверяет соответствует ли значение TSQLTimeStamp правильной дате и времени. |
CompareDate | функция DateUtils | Сравнивает два значения TDateTime между собой по значению даты. |
CompareDateTime | функция DateUtils | Сравнивает два значения TDateTime между собой. |
CompareTime | функция DateUtils | Сравнивает два значения TDateTime между собой по значению времени. |
CurrentYear | функция SysUtils | Возвращает текущий год. |
Date | функция SysUtils | Возвращает текущую дату. |
DateDelta | константа SysUtils | Определяет различие между значениями TDateTime и TTimeStamp. |
DateOf | функция DateUtils | «Вырезает» значение времени из TDateTime (устанавливает значение времени в 0, что означает полночь). |
DateTimeToFileDate | функция SysUtils | Конвертирует объект TDateTime в формат времени операционной системы. |
DateTimeToSQLTimeStamp | функция SqlTimSt | Конвертирует значение TDateTime в TSQLTimeStamp. |
DateTimeToStr | функция SysUtils | Конвертирует значение TDateTime в строку. |
DateTimeToString | процедура SysUtils | Конвертирует значение TDateTime в строку, используя указаный формат строки. |
DateTimeToSystemTime | процедура SysUtils | Конвертирует значение TDateTime в системное время Win32 API. |
DateTimeToTimeStamp | функция SysUtils | Конвертирует значение TDateTime в соответствующее значение TTimeStamp. |
DateToStr | функция SysUtils | Конвертирует значение даты из TDateTime в строку. |
Day of week | константы DateUtils |
|
DayOf | функция DateUtils | Возвращает день месяца из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 31. |
DayOfTheMonth | функция DateUtils | Возвращает день месяца из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 31. |
DayOfTheWeek | функция DateUtils |
|
DayOfTheYear | функция DateUtils | Возвращает количество дней между значением, указаным в TDateTime и 31 Декабря предыдущего года. |
DayOfWeek | функция SysUtils |
|
DaysBetween | функция DateUtils | Возвращает количество полных дней из промежутка времени, заданного двумя значениями TDateTime. |
DaysInAMonth | функция DateUtils | Возвращает количество дней в указаном месяце указаного года. |
DaysInAYear | функция DateUtils | Возвращает количество дней в указаном году. |
DaysInMonth | функция DateUtils | Возвращает количество дней в месяце, заданом в значении TDateTime. |
DaysInYear | функция DateUtils | Возвращает количество дней в году, заданом в значении TDateTime. |
DaySpan | функция DateUtils | Возвращает количество дней, включая дробную часть, из промежутка времени, заданного двумя значениями TDateTime. |
DecodeDate | процедура SysUtils | Возвращает значения Год, Месяц, День для значения TDateTime. |
DecodeDateDay | процедура DateUtils | Возвращает год и день года для значения, указаного в TDateTime. |
DecodeDateFully | функция SysUtils | Возвращает значения Год, Месяц, День, День_Недели для значения TDateTime. |
DecodeDateMonthWeek | процедура DateUtils | Возвращает значения Год, Месяц, Неделя_Месяца, День_Недели для значения TDateTime. |
DecodeDateTime | процедура DateUtils | Возвращает значения Год, Месяц, День, Час, Минута, Секунда, Милисекунда для значения TDateTime. |
DecodeDateWeek | процедура DateUtils | Возвращает значения Год, Неделя_Года, День_Недели для значения TDateTime. |
DecodeDayOfWeekInMonth | процедура DateUtils | Для заданного значения TDateTime возвращает Год, Месяц, День_Недели и Число_Дней_в_Этой_Неделе_для_Этого_Месяца. |
DecodeTime | процедура SysUtils | Разбивает значение TDateTime на часы, минуты, секунды и милисекунды. |
EncodeDate | функция SysUtils | Возвращает значение TDateTime, заданое как Год, Месяц, День. |
EncodeDateDay | функция DateUtils | Возвращает значение TDateTime, заданое как указаный день указаного года. |
EncodeDateMonthWeek | функция DateUtils | Возвращает значение TDateTime, заданое как указаный день указаной недели в указаном месяце и году. |
EncodeDateTime | функция DateUtils | Возвращает значение TDateTime, заданое как Год, Месяц, День, Час, Секунда, Милисекунда. |
EncodeDateWeek | функция DateUtils | Возвращает значение TDateTime, заданое как указаный день указаной недели в указаном году. |
EncodeDayOfWeekInMonth | функция DateUtils | Возвращает значение TDateTime, заданое как положение дня недели в указаном месяце и году. |
EncodeTime | функция SysUtils | Возвращает значение TDateTime, заданое как часы, минуты, секунды и милисекунды. |
EndOfADay | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду указаного дня. |
EndOfAMonth | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаного месяца. |
EndOfAWeek | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаной недели. |
EndOfAYear | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаного года. |
EndOfTheDay | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду дня, указаного в TDateTime. |
EndOfTheMonth | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня месяца, указаного в TDateTime. |
EndOfTheWeek | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня недели, указаной в TDateTime. |
EndOfTheYear | функция DateUtils | Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня года, указаного в TDateTime. |
FormatDateTime | функция SysUtils | Возвращает значение TDateTime в виде форматной строки. Если форматная строка не задана, то принимается та, которая основана на текущей локализации системы. |
HourOf | функция DateUtils | Возвращает час дня, из значения TDateTime. |
HourOfTheDay | функция DateUtils | Возвращает час дня, из значения TDateTime. |
HourOfTheMonth | функция DateUtils | Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня месяца. |
HourOfTheWeek | функция DateUtils | Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня недели. |
HourOfTheYear | функция DateUtils | Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня года. |
HoursBetween | функция DateUtils | Возвращает количество полных часов между двумя значениями TDateTime. |
HourSpan | функция DateUtils | Возвращает количество часов, включая дробную часть, между двумя значениями TDateTime. |
IncAMonth | процедура SysUtils | Увеличивает дату на один месяц. |
IncDay | функция DateUtils | Возвращает дату, сдвинутую на указаное число дней. |
IncHour | функция DateUtils | Возвращает дату/время, сдвинутую на указаное число часов. |
IncMilliSecond | функция DateUtils | Возвращает дату/время, сдвинутую на указаное число милисекунд. |
IncMinute | функция DateUtils | Возвращает дату/время, сдвинутую на указаное число минут. |
IncMonth | функция SysUtils | Возвращает дату, сдвинутую на указаное число месяцев. |
IncSecond | функция DateUtils | Возвращает дату/время, сдвинутую на указаное число секунд. |
IncWeek | функция DateUtils | Возвращает дату, сдвинутую на указаное число недель. |
IncYear | функция DateUtils | Возвращает дату, сдвинутую на указаное количество лет. |
IsInLeapYear | функция DateUtils | Показывает, принадлежит ли значение, указаное в TDateTime, високосному году. |
IsLeapYear | функция SysUtils | Показывает, является ли указаный год високосным. |
IsPM | функция DateUtils | Показывает, принадлежит ли значение времени, указаное в TDateTime, второй половине дня . |
IsSameDay | функция DateUtils | Показывает, принадлежит ли значение, указаное в TDateTime, заданой дате. |
IsToday | функция DateUtils | Показывает, принадлежит ли значение, указаное в TDateTime, текущей дате. |
IsValidDate | функция DateUtils | Проверяет, являются ли указаные год, месяц и день допустимой датой. |
IsValidDateDay | функция DateUtils | Проверяет, являются ли указаные год и день года допустимой датой. |
IsValidDateMonthWeek | функция DateUtils | Проверяет, являются ли указаные год, месяц, неделя месяца и день недели допустимой датой. |
IsValidDateTime | функция DateUtils | Проверяет, являются ли указаные год, месяц, день, час, минута, секунда и милисекунда допустимыми значениями даты и времени. |
IsValidDateWeek | функция DateUtils | Проверяет, являются ли указаные год, неделя года и день недели допустимой датой. |
IsValidTime | функция DateUtils | Проверяет, являются ли указаные час, минута, секунда и милисекунда допустимыми значениями даты и времени. |
MilliSecondOf | функция DateUtils | Возвращает милисекунды из значения TDateTime. |
MilliSecondOfTheDay | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этого самого дня. |
MilliSecondOfTheHour | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этого самого часа. |
MilliSecondOfTheMinute | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этой самой минуты. |
MilliSecondOfTheMonth | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом месяца. |
MilliSecondOfTheSecond | функция DateUtils | Возвращает милисекунды из значения TDateTime. |
MilliSecondOfTheWeek | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и 12:00:00:00 AM первого дня недели. |
MilliSecondOfTheYear | функция DateUtils | Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и 12:00:00:00 AM первого дня года. |
MilliSecondsBetween | функция DateUtils | Возвращает количество милисекунд между двумя значениями TDateTime. |
MilliSecondSpan | функция DateUtils | Возвращает количество милисекунд между двумя значениями TDateTime. Но в качестве результата вместо целого типа испльзуется число с плавающей точкой. |
MinuteOf | функция DateUtils | Возвращает минуты из значения TDateTime. |
MinuteOfTheDay | функция DateUtils | Возвращает количество минут между значением указаным в TDateTime и 12:00 AM того же дня. |
MinuteOfTheHour | функция DateUtils | Возвращает количество минут, прошедшее между значением указаным в TDateTime и началом этого самого часа. |
MinuteOfTheMonth | функция DateUtils | Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня месяца. |
MinuteOfTheWeek | функция DateUtils | Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня недели. |
MinuteOfTheYear | функция DateUtils | Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня года. |
MinutesBetween | функция DateUtils | Возвращает количество полных минут между двумя значениями TDateTime. |
MinuteSpan | функция DateUtils | Возвращает количество минут, включая дробную часть, между двумя значениями TDateTime. |
MonthOf | функция DateUtils | Возвращает месяц года из значения TDateTime. |
MonthOfTheYear | функция DateUtils | Возвращает месяц года из значения TDateTime. |
MonthsBetween | функция DateUtils | Возвращает количество полных месяцев между двумя значениями TDateTime. |
MonthSpan | функция DateUtils | Возвращает количество месяцев, включая дробную часть, между двумя значениями TDateTime. |
MSecsToTimeStamp | функция SysUtils | Конвертирует указаное количество милисекунд в значение TTimeStamp. |
Now | функция SysUtils | Возвращает текущие дату и время. |
NthDayOfWeek | функция DateUtils | Возвращает сколько дней, с таким же порядковым номером дня недели, было в текущем месяце, представленом значением TDateTime. |
NullSQLTimeStamp | константа SqlTimSt | Значение NULL для TSQLTimeStamp. |
OneHour Constant; OneMillisecond Constant; OneMinute Constant; OneSecond Constant | константы DateUtils | Обратные константы времени в модуле Delphi. |
RecodeDate | функция DateUtils | Меняет в TDateTime значение даты на новые значения Год, Месяц, День. В случае неудачи вызывает исключение EConvertError. |
RecodeDateTime | функция DateUtils | Выборочно изменяет в TDateTime значения Год, Месяц, День, Час, Секунда, Милисекунда на заданые. В случае неудачи вызывает исключение EConvertError. |
RecodeDay | функция DateUtils | Меняет значение День месяца в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeHour | функция DateUtils | Меняет значение Час дня в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeMilliSecond | функция DateUtils | Меняет значение Милисекунда в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeMinute | функция DateUtils | Меняет значение Минута часа в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeMonth | функция DateUtils | Меняет значение Месяц года в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeSecond | функция DateUtils | Меняет значение Секунда часа в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
RecodeTime | функция DateUtils | Меняет в TDateTime значение времени на новые значения Час, Минута, Секунда, Милисекунда. В случае неудачи вызывает исключение EConvertError. |
RecodeYear | функция DateUtils | Меняет значение Год в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError. |
ReplaceDate | процедура SysUtils | Заменяет значение даты в TDateTime на заданое. |
ReplaceTime | процедура SysUtils | Заменяет значение времени в TDateTime на заданое. |
SameDate | функция DateUtils | Показывает, представляют ли два значения TDateTime тот же самый год, месяц и день. |
SameDateTime | функция DateUtils | Показывает, представляют ли два значения TDateTime те же самые год, месяц, день, час, секунда, милисекунда. |
SameTime | функция DateUtils | Показывает, совпадают ли значения времени в двух значениях TDateTime. |
SecondOf | функция DateUtils | Возвращает количество секунд минуты из значения TDateTime. |
SecondOfTheDay | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM того же самого дня. |
SecondOfTheHour | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и началом того же самого часа. |
SecondOfTheMinute | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и началом той же самой минуты. |
SecondOfTheMonth | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня месяца. |
SecondOfTheWeek | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня недели. |
SecondOfTheYear | функция DateUtils | Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня года. |
SecondsBetween | функция DateUtils | Возвращает количество секунд между двумя значениями TDateTime. |
SecondSpan | функция DateUtils | Возвращает количество секунд, включая дробную часть, между двумя значениями TDateTime. |
SQLDayOfWeek | функция SqlTimSt | Возвращает день недели из значения TSQLTimeStamp. Возвращаемое функцией значение находится в промежутке между 1 и 7, где Воскресение (Sunday) является первым днем недели, а Суббота (Saturday) — седьмым. |
SQLTimeStampToDateTime | функция SqlTimSt | Конвертирует значение TSQLTimeStamp в TDateTime. |
SQLTimeStampToStr | функция SqlTimSt | Конвертирует значение TSQLTimeStamp в строку. |
StartOfADay | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM указаного дня. |
StartOfAMonth | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня указаного месяца. |
StartOfAWeek | функция DateUtils | Возвращает значение TDateTime которое представляет первый момент указаного дня указаной недели. |
StartOfAYear | функция DateUtils | Возвращает значение TDateTime которое представляет первый момент первого дня указаного года. |
StartOfTheDay | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM дня, заданого значением TDateTime. |
StartOfTheMonth | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня месяца, заданого значением TDateTime. |
StartOfTheWeek | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня недели, заданой значением TDateTime. |
StartOfTheYear | функция DateUtils | Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня года, заданого значением TDateTime. |
StrToDate | функция SysUtils | Конвертирует строку с датой в TDateTime. В случае неудачи вызывает исключение EConvertError. |
StrToDateDef | функция SysUtils | Конвертирует строку с датой в TDateTime со значением по умолчанию в случае ошибки. |
StrToDateTime | функция SysUtils | Конвертирует строку в значение TDateTime. В случае неудачи вызывает исключение EConvertError. |
StrToDateTimeDef | функция SysUtils | Конвертирует строку в значение TDateTime со значением по умолчанию в случае ошибки. |
StrToSQLTimeStamp | функция SqlTimSt | Конвертирует строку в значение TSQLTimeStamp. В случае неудачи вызывает исключение EConvertError. |
StrToTime | функция SysUtils | Конвертирует строку со временем в значение TDateTime. В случае неудачи вызывает исключение EConvertError. |
StrToTimeDef | функция SysUtils | Конвертирует строку со временем в значение TDateTime со значением по умолчанию в случае ошибки. |
SystemTimeToDateTime | функция SysUtils | Конвертирует значение системного времени в значение TDateTime. |
Time | модульные константы SysUtils | Значения констант для вычисления времени. |
Time, GetTime | функции SysUtils | Возвращают текущее время. |
TimeOf | функция DateUtils | Убирает значение даты из значения TDateTime. |
TimeStampToDateTime | функция SysUtils | Конвертирует значение TTimeStamp в соответствующее значение TDateTime. |
TimeStampToMSecs | функция SysUtils | Конвертирует значение TTimeStamp в TTimeStamp в абсолютное число милисекунд. |
TimeToStr | функция SysUtils | Конвертирует значение времени из TDateTime в строку. |
Today | функция DateUtils | Возвращает значение TDateTime, представляющее текущую дату. |
Tomorrow | функция DateUtils | Возвращает значение TDateTime, представляющее следующий день. |
TryEncodeDate | функция SysUtils | Создает значение TDateTime, предсталяющее указаный Год, Месяц, День. В случае неудачи возвращает False. |
TryEncodeDateDay | функция DateUtils | Вычисляет значение TDateTime которое представляет указаный день для указаного года. В случае неудачи возвращает False. |
TryEncodeDateMonthWeek | функция DateUtils | Вычисляет значение TDateTime которое представляет указаный день указаной недели в указаном месяце и году. В случае неудачи возвращает False. |
TryEncodeDateTime | функция DateUtils | Вычисляет значение TDateTime которое представляет указаные год, месяц, день, час, минуту, секунду и милисекунду. В случае неудачи возвращает False. |
TryEncodeDateWeek | функция DateUtils | Вычисляет значение TDateTime которое представляет указаный день указаной недели в указаном году. В случае неудачи возвращает False. |
TryEncodeDayOfWeekInMonth | функция DateUtils | Вычисляет значение TDateTime которое представляет указаный день недели в указаном месяце и году. В случае неудачи возвращает False. |
TryEncodeTime | функция SysUtils | Создает значение TDateTime для заданых значений Час, Минута, Секунда и Милисекунда. В случае неудачи возвращает False. |
TryRecodeDateTime | функция DateUtils | Выборочно меняет значения Год, Месяц, День, Час, Секунда, Милисекунда в указаном TDateTime. В случае неудачи возвращает False. |
TryStrToDate | функция SysUtils | Конвертирует строку с датой в TDateTime. В случае неудачи возвращает False. |
TryStrToDateTime | функция SysUtils | Конвертирует строку в значение TDateTime. В случае неудачи возвращает False. |
TryStrToSQLTimeStamp | функция SqlTimSt | Конвертирует строку в значение TSQLTimeStamp. В случае неудачи возвращает False. |
TryStrToTime | функция SysUtils | Конвертирует строку со временем в значение TDateTime. В случае неудачи возвращает False. |
UnixDateDelta | константа SysUtils | Определяет разницу между значениями TDateTime и TIME_T. Тип TIME_T используется в системах Unix и Lnux, а так же в стандартных библиотеках C. |
WeekOf | функция DateUtils | Возвращает неделю года из значения TDateTime. |
WeekOfTheMonth | функция DateUtils | Возвращает неделю месяца из значения TDateTime. |
WeekOfTheYear | функция DateUtils | Возвращает неделю года из значения TDateTime. |
WeeksBetween | функция DateUtils | Возвращает количество полных недель между двумя значениями TDateTime. |
WeeksInAYear | функция DateUtils | Возвращает количество недель в указаном году. |
WeeksInYear | функция DateUtils | Возвращает количество недель в году из значения TDateTime. |
WeekSpan | функция DateUtils | Возвращает количество недель, включая дробную часть, между двумя значениями TDateTime. |
WithinPastDays | функция DateUtils | Показывает, находятся ли две даты в заданом промежутке дней относительно друг друга. |
WithinPastHours | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке часов относительно друг друга. |
WithinPastMilliSeconds | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке милисекунд относительно друг друга. |
WithinPastMinutes | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке минут относительно друг друга. |
WithinPastMonths | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке месяцев относительно друг друга. |
WithinPastSeconds | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке секунд относительно друг друга. |
WithinPastWeeks | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке недель относительно друг друга. |
WithinPastYears | функция DateUtils | Показывает, находятся ли два значения даты/времени в заданом промежутке лет относительно друг друга. |
YearOf | функция DateUtils | Возвращает Год из значения TDateTime. |
YearsBetween | функция DateUtils | Возвращает приблизительное количество лет между двумя значениями TDateTime. |
YearSpan | функция DateUtils | Возвращает приблизительное количество лет, включая дробную часть, между двумя значениями TDateTime. |
Yesterday | функция DateUtils | Возвращает значение TDateTime которое соответствует предыдущему дню. |
Содержание
Тип TDateTime.
Тип TDateTime — это основной тип в Delphi для работы с датой и временем. Он является числом с плавающей запятой, целая часть которого содержит число дней, отсчитанное от некоторого начала календаря, а дробная часть равна части 24-часового дня, т.е. характеризует время и не относится к дате. Для 32-разрядных версий Delphi за начало календаря принята дата 12/30/1899, 12 часов.
Ниже приведены несколько примеров значения TDateTime и соответсвующие им дата и время:
12/30/1899 12:00 am | |
2.75 | 1/1/1900 6:00 pm |
-1.25 | 12/29/1899 6:00 am |
35065 | 1/1/1996 12:00 am |
Чтобы найти количество дней, включая дробную часть, между двумя датами, просто вычтите два значения, если только одно из них не является отрицательным. Аналогично, если значение TDateTime не отрицательное, то, чтобы увеличить значение даты и времени на определенное кличество дней, включая дробную часть, достаточно прибавить количество дней, включая дробную часть, к значению TDateTime.
Когда обрабатываются отрицательные значения TDateTimes, то вычисление дробной части производится отдельно. Дробная часть отражает часть 24-часового дня не зависимо от знака значения TDateTime. Например, 6:00 am on 12/29/1899 это –1.25, а неt –1 + 0.25, что составило бы –0.75. Значений TDateTime между –1 и 0 не существует. Cовет: В модулях SysUtils и DateUtils для работы с датой и временем имеется большое количество процедур и функций на все случаи жизни. Не заморачивайтесь с обственными вычислениями, не изобретайте велосипед, а пользуйтесь уже готовыми наработками разработчиков Delphi. (См. Функции и процедуры Delphi для работы с датой и временем.) Оно надежнее.
Примечание: В Delphi 1 за начало отсчета принят год 1, т.е. для перевода даты Delphi 1 в дату последующих версий Delphi надо вычесть из даты число 693594.
Содержание
Тип TTimeStamp.
TTimeStamp представляет значения дата и время.
Используйте TTimeStamp если требуется повышеная точность представления значения времени в знчениях дата/время. Если нет необходимости сохранять значение времени с точностью до милисекунд, используйте более компактное TDateTime. Если необходима еще большая точность, то используйте TSQLTimeStamp (но НЕ назначайте его типом Variant).
Поле Time field показывает количество милисекунд, прошедших с полуночи.
Поле Data показывает число календарных дней от начала календаря (число дней с 1/1/0001 плюс один).
Содержание
Тип TSQLTimeStamp.
TSQLTimeStamp представляет значения даты и времени с очень высокой точностью.
Драйвера баз данных dbExpress используют TSQLTimeStamp когда работают со значениями даты и времени.
- Year определяет год от 1 до 9999.
- Month определяет месяц от 1 до 12.
- Day определяет день месяца, от 1 до 28, 29, 30, или 31, в зависимости от значения Month.
- Hour определяет час от 0 до 23.
- Minute и Second могут колебаться от 0 до 59.
- Fractions определяет милисекунды от 0 до 999.
Используя функцию VarSQLTimeStampCreate, Вы можете создать тип Variant который представляет значение TSQLTimeStamp. Фактически, простейший путь манипулирования значениями SQLTimeStamp это создать подобный Variant и использовать встроеные операторы, обеспечивающие работу с Variant.
Проверка на вхождение в диапазон
Delphi , Синтаксис , Типы и Переменные
Статья Проверка на вхождение в диапазон раздела Синтаксис Типы и Переменные может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
DaysBetween — Функция Delphi
hi
how can i know the number of days between two dates?i tried «duration.value := date1.value — date2.value» and it gives an error. ‘duration = integer field’. date1/2 are datetime fields’.
if you are using delphi 7 or above
make uses of DATEUTILS
and use the next function
duration.AsInteger := DAYSBETWEEN (date1.AsDateTime, date2.AsDateTime)
it returns that you need
if you are using delphi 5 then do it
duration.AsInteger := Trunc(date1.AsDateTime — date2.AsDateTime)
procedure TForm1.Button1Click(Sender: TObject);
var i: Extended;
d1, d2: TDateTime;
c1, c2, c3, c4: String;
begin
d1 := StrToDateTime( ’04/10/2008 10:30 AM’);
d2 := StrToDateTime( ’04/12/2008 2:10 PM’);
c1 := ‘Integer part shows duration in Days (‘;
c2 := ‘)’ + Chr(13)+Chr(10)+’Decimal part shows duration in Hr (‘;
c3 := ‘) and Min (‘;
c4 := ‘)’;
i := d2 — d1;
ShowMessage(
c1 + IntToStr( Trunc(i)) +
c2 + IntToStr( Trunc((i-Trunc(i))*24)) +
c3 + IntToStr( Trunc(((i-Trunc(i))*24-Trunc((i-Trunc(i))*24))*60)) +
c4);
end;
[DELPHI]duration.AsInteger := Trunc(date1.AsDateTime — date2.AsDateTime)[/DELPHI]
Should work fine with Delphi 3
Then the last suggestion (for Delphi 5) should work anyway .
Objective reality is a delirium caused by lack of alcohol in blood.
There is no place like 127.0.0.1
DaysBetween Routine
Description
(Please provide a description in your own words. It is illegal to use the wording from the Delphi Help.)
Technical Comments
(Known issues / Documentation clarifications / Things to be aware of)
Examples
(Please provide links to articles/source code that show how to use this item.)
See Also
(Please provide links to items specifically related to this item.)
User Comments/Tips
(Please leave your name with your comment.)
daysbetween разница между двумя датами в сетке
Я пытаюсь вычислить daysbetween разница между двумя датами в сетке. Этот вид’a работает, но производит сначала странный результат: это событие Oncalculate полей таблицы TEMP:
BIV_OD и BIV_DO — это поля даты (например. Date_From — Date-to) Когда я выбираю первую дату в сетке (BIV_OD), мое поле DAYS сначала показывает 40731 (??) Затем, когда я вводим вторую дату все работает нормально. Почему это?
Это то, что вы просили.
Delphi хранит даты как количество дней с 31/12/1899, поэтому, когда вы пишете первое свидание, которое вы делаете 40731 (количество дней с 31/12/1899), — 0, так как вы еще не указали вторую дату.
Решение было бы не вычислять поле, если не будут заполнены обе даты.
Хотя я бы установил столбец сетки для типа данных integer.
DaysBetween — Функция Delphi
Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия
Репутация: нет
Всего: 1
Dimich |
|
|
Marriage |
|
|
[/B], ‘); return false;» title=»Вставить ник в поле ввода»> |
|
||
|
||||||||||||||||||||||||||||||||||||||||||||||||
Правила форума «Delphi: Общие вопросы» | ||||||||||||||||||||||||||||||||||||||||||||||
От: | Rius |
Дата: | 26.08.08 02:52 |
Оценка: |
Здравствуйте, svg2003, Вы писали:
S>похоже вылез очередной баг VCL-ля.
S>исходная задача: имеем TDateTime, из него нужно получить количество дней. компилятор bcc5.5.1.
S>логично было бы преобразовать его в int и в нём будет лежать количество дней, но cледующий код выдаёт:
S>31.12.1899
S>0.9999999999999995559
S>0
S>
S>хотелось бы знать, где я ошибся, и что я делаю не так, а то у меня всё большее желание, отказаться от этого самого TDateTime во всех проектах в пользу самописного класса. на сравнениях уже накалывался, теперь вот это
попробуйте получить число дней встроенными свойствами класса TDateTime
От: | svg2003 |
Дата: | 26.08.08 02:58 |
Оценка: |
Здравствуйте, Rius, Вы писали:
R>попробуйте получить число дней встроенными свойствами класса TDateTime
К сожалению, встроенных свойств для этого нету. В хелпе так и написано, The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. Сейчас получается дикий изврат, когда я отбрасываю ошибки округления, а только потом получаю верное количество дней:
От: | Hruks | www.hruks.com |
Дата: | 26.08.08 06:02 | |
Оценка: |
Здравствуйте, svg2003, Вы писали:
S>похоже вылез очередной баг VCL-ля.
int(0.9999999999999995559) и должен быть равен 0. Тут как раз всё верно.
Единственный ньюанс это небольшая неточность при конвертации из строки в число: TDateTime t2( «01:00:00» );
Но это вполне допустимо.
Работа с плавающей точкой требует аккуратности.
Например нельзя сравнивать числа с плавающей точкой на равестнство.
Вместо этого нужно сравнивать модуль разности чисел с константой точности.
Для Вашего примера характерна ещё одна неосторожность в работе с плавающей точкой — целочисленное откидывание дробной части (преобразование к инту)
Либо прибавляйте 0.5 к переменной t1 перед преобразованием к int, либо используйте функцию округления (trunc) вместо отбрасывания целой части (int).
От: | andy1618 |
Дата: | 26.08.08 06:43 |
Оценка: |
H>Либо прибавляйте 0.5 к переменной t1 перед преобразованием к int, либо используйте функцию округления (trunc) вместо отбрасывания целой части (int).
trunc — это, вроде, тоже отбрасывание. Надо round использовать. А вообще, есть такой чудный модуль — DateUtils (по крайней мере, в Delphi) — там разных функций для работы с TDateTime — мама не горюй!
От: | andy1618 |
Дата: | 26.08.08 06:47 |
Оценка: |
S>похоже вылез очередной баг VCL-ля.
По-видимому, Вам сюда:
(статья 7-летней давности про «неочевидные особенности вещестенных чисел»)
http://www.delphikingdom.com/asp/viewitem.asp?catalog >
От: | Leonid Troyanovsky |
Дата: | 26.08.08 09:27 |
Оценка: |
Здравствуйте, andy1618, Вы писали:
A>trunc — это, вроде, тоже отбрасывание. Надо round использовать. А вообще, есть такой чудный модуль — DateUtils (по крайней мере, в Delphi) — там разных функций для работы с TDateTime — мама не горюй!
А чего в оном сверхестественного?
Смотрим function DaysBetween и видим тот же Trunc.
От: | svg2003 |
Дата: | 26.08.08 23:03 |
Оценка: |
Здравствуйте, svg2003, Вы писали:
Ребят, я всё прекрасно понимаю про внутреннюю структуру вещественных чисел, особенности преобразования и т.д. и т.п. Но у меня-то задача конкретная — получить из TDateTime число дней. Способ, предложенный в документации, работает не верно. Кстати, +0.5 делать тоже нельзя, потому как 23:00:00 в вещественном виде представлен 0.9583333333333329263. Конечно, можно делать +0.000005 или нечто подобное, что сделал я с пересозданием TDateTime-а, но проблему-то это не решает по сути. Ну нет ошибки в том месте, вылезет потом где-нибудь в другом
От: | andy1618 |
Дата: | 27.08.08 05:51 |
Оценка: |
A>>trunc — это, вроде, тоже отбрасывание. Надо round использовать. А вообще, есть такой чудный модуль — DateUtils (по крайней мере, в Delphi) — там разных функций для работы с TDateTime — мама не горюй!
LT>А чего в оном сверхестественного?
LT>Смотрим function DaysBetween и видим тот же Trunc.
Упс, извиняюсь, там есть только fuzzy-функции для сравнения. Да и моё предложение про round — тоже не в кассу
А проблему можно решить так: перед вычислением DaysBetween делать «очистку», т.е. выравнивание TDateTime до целых миллисекунд.
Что-нибудь типа такого:
Либо, если предполагается много арифметики со временем — то можно сразу использовать TTimeStamp:
==
TTimeStamp represents time and date values.
Use TTimeStamp to represent date and time values when a great deal of accuracy is required for the time portion. When the time values do not need to be precise to the millisecond, use the more compact TDateTime representation. If additional precision is needed, use TSQLTimeStamp (but do NOT assign it to a Variant).
TTimeStamp is a record with a Time field that represents the number of seconds elapsed since midnight, and a Date field that represents the number of calendar days since the start of the calendar.
От: | andy1618 |
Дата: | 27.08.08 06:21 |
Оценка: |
S>Ребят, я всё прекрасно понимаю про внутреннюю структуру вещественных чисел, особенности преобразования и т.д. и т.п. Но у меня-то задача конкретная — получить из TDateTime число дней. Способ, предложенный в документации, работает не верно.
Строго говоря, само преобразование в дни работает честно, т.к. в вашем примере до полных суток не хватает парочки каких-нибудь там фемтосекунд
Ну а, чтобы побороть ошибки вещественной арифметики, можно перед преобразованием в дни округлять время до целых секунд/миллисекунд.
Можно так
Функции Delphi модуля DateUtils
Предлагаем список функций модуля DateUtils , используемого в среде разработки Delphi.
Модуль DateUtils
DayOfTheMonth Дает день месяца для значения TDateTime (ISO 8601)
DayOfTheWeek Возвращает индекс дня недели для значения TDateTime (ISO 8601)
DayOfTheYear Выдает день года для значения TDateTime (ISO 8601)
DaysBetween Выдает целый число дней между 2 датами
DaysInAMonth Выдает число дней в месяце
DaysInAYear Выдает число дней в году
DaySpan Выдает дробное число дней между 2 датами
EncodeDateTime Формирует значение TDateTime из значений времени и дня
EndOfADay Генерирует значение TDateTime, установленное на самый конец дня
EndOfAMonth Генерация значения TDateTime, установленное на самый конец месяца
IncDay Приращивает переменную типа TDateTime на + или — число дней
IncMillisecond Приращивает переменную типа TDateTime на + или — число миллисекунд
IncMinute Приращивает переменную типа TDateTime на + или — число минут.
IncSecond Приращивает переменную типа TDateTime на + или — число секунд
IncYear Увеличивает TDateTime переменную на количество лет
RecodeDate Изменяет только дату переменной TDateTime
RecodeTime Изменяет только время переменной TDateTime
Tomorrow Возвращает дату завтрашнего дня
MonthOfTheYear Выдает месяц года для значения TDateTime
Yesterday Выдает вчерашнюю дату
Функции Delphi модуля DateUtils : 3 комментария
Давно искала подобное, спасибо очень интересно!