EncodeDate
Encode a Year,Month,Day to a TDateTime value.
Declaration
Source position: datih.inc line 117
Description
EncodeDate encodes the Year , Month and Day variables to a date in TDateTime format. It does the opposite of the DecodeDate procedure.
The parameters must lie withing valid ranges (boundaries included):
Year must be between 1 and 9999. Month must be within the range 1-12. Day msut be between 1 and 31.
Errors
In case one of the parameters is out of it’s valid range, an EConvertError exception is raised.
See also
Encode a Hour,Min,Sec,millisec to a TDateTime value.
Decode a TDateTime to a year,month,day triplet
EncodeDate(Year, Month, Day[, Hour, Minute, Second[, MilliSecond]] : Integer) : Datetime
Сформировать значение типа DateTime.
Функция EncodeDate возвращает значение типа DateTime для указанных значений.
Аргумент Year содержит год.
Аргумент Month содержит месяц в виде числа от 1 до 12. Число 1 соответствует январю, 12 соответствует декабрю.
Аргумент Day содержит день. День должен быть в пределах от 1 до 31.
Аргумент Hour содержит час. Он должны быть в пределах от 0 до 23.
Аргумент Minute содержит минуты. Они должны быть в пределах от 0 до 59.
Аргумент Second содержит секунды. Они должны быть в пределах от 0 до 59.
Аргумент MilliSecond содержит миллисекунды. Они должны быть в пределах от 0 до 999.
Не указанные аргументы Hour, Minute, Second, MilliSecond заполняются нулями.
EncodeDate — Функция Delphi
The permitted parameter values are :
Year | = 0..9999 |
Month | = 1..12 |
Day | = 1..31 (depending on month/year) |
If you exceed these values, an EConvertError is raised.
DecodeDate | Extracts the year, month, day values from a TDateTime var. |
DecodeDateTime | Breaks a TDateTime variable into its date/time parts |
DecodeTime | Break a TDateTime value into individual time values |
EncodeDateTime | Build a TDateTime value from day and time values |
EncodeTime | Build a TDateTime value from hour, min, sec and msec values |
Example code : Assign a date to a TDateTime variable | |
// Full Unit code. // ———————————————————— // You must store this code in a unit called Unit1 with a form // called Form1 that has an OnCreate event called FormCreate. unit Unit1; uses type var implementation EncodeDate — Функция DelphiИ ещё вопрос: а не удобнее будет разделить файл kol.pas на несколько юнитов, по функциональности? Конечно, нужно будет несколько модулей вставлять в заголовке, но ведь и самому, наверное не очень просто править файл с числом строк более 60000? Предложение конечно хорошее. Тем более что KOL постепенно растёт, и где гарантия что не разрастётся до очень больших размеров? Не разрастется. То, что в нем есть, должно оставаться единым модулем. И что с того, что kol.pas большой? Компиляция замедляется? Я не А как насчёт функций? Я тут это всё дело реализовал самостоятельно, правда сдаётся мне, что они работают с Delphi исчислением (от 1899). Что будет тебе проще, Владимир, с нуля написать, или мои поправить? Есть код — высылайте, посмотрю. Всяко легче, чем с нуля. Существует ли версия функции Delphi EncodeDate / DecodeDate, которая может обрабатывать даты BC?Функции Delphi EncodeDate / DecodeDate, похоже, способны обрабатывать только даты после 1.1.0001. Существуют ли некоторые реализации EncodeDate / DecodeDate, которые могут обрабатывать значения BC tDateTime? 1 ответAFAIK TDateTime — это базовый тип Windows, общий для COM, Variants, DotNet и Delphi. Отрицательные значения можно использовать для дат до 1899 года. Но это не так просто, поскольку с отрицательными значениями возникают проблемы, как указано на этой странице :
С современными датами время всегда идет вперед, как вы и предполагали. С отрицательными историческими датами время фактически бежит назад! Полночь # 1/1/1800 # равняется -36522, но полдень # 1/1/1800 # равна -36522,5 (меньше полуночи!), А за одну секунду до полуночи — -36522.9999884259 (даже меньше). В полночь часы переходят на -36521, что равно # 1/2/1800 #. Десятичная дробь по-прежнему показывает время, а неотъемлемой частью является дата, но каждая секунда уменьшает время, в то время как каждый новый день увеличивает его, не только на 1, но почти на 2. Отрицательные времена действительно противоречат интуитивному принципу. Что еще хуже, значения времени для # 12/30/1899 # неоднозначны в двух отношениях. Во-первых, значение времени без даты равно этому времени в # 12/30/1899 #. Это означает, что 0.5 — это либо полдень, либо полдень на # 12/30/1899 #, в зависимости от контекста. Ноль — это или полночь, # 12/30/1899 # или полночь # 12/30/1899 #. Другая двусмысленность состоит в том, что все значения времени удваиваются для # 12/30/1899 #. 0.5 — полдень # 12/30/1899 #, но -0.5 также полдень # 12/30/1899 #. Неотъемлемой частью является дата, а дробью — время. Еще один сюрприз здесь: # 12/30/1899 23:59:59 PM # — # 12/29/1899 11:59:59 PM # = 2.99997685185185. Не 1, что вы обычно ожидаете в течение 24 часов. Будьте осторожны при работе с историческими датами. Насколько мне известно, текущая реализация EncodeDate / DecodeDate будет работать, но у вас могут возникнуть проблемы при работе с отрицательными или близкими к нулю значениями TDateTime . Вам лучше использовать свой собственный формат времени, например, ISO-8601 или простую запись как таковую: И при вычислении вещей о продолжительности или отображении даты / времени вы должны знать, что «наше время» не является непрерывным. Таким образом, расчет с использованием трюка TDateTime=double не всегда будет работать должным образом. Например, я помню, что Тереза из Авилы умерла в 1582 году 4 октября , так же, как католические народы переходили от юлианского к григорианскому календарю, что требовало удаления 5–14 октября из календаря. Процедуры и функции работы с датой и временемFunction Date: TDateTime;Возвращает текущую дату. Function DateTimeToStr(DateTime: TDateTime): String;Преобразовывает параметр типа TDateTime, содержащий дату и время, в строку. Если параметр DateTime не содержит значения даты, дата устанавливается в 00/00/00. Если параметр DateTime не содержит значения времени, время устанавливается в 00:00:00. Function DateToStr(Date: TDateTime): String;Преобразовывает параметр типа TDateTime, содержащий дату, в строку. Преобразование использует формат, определенный глобальной переменной ShortDateFormat. Function DayOfWeek(Date: TDateTime): Integer;Возвращает день недели определенной даты как целое число между 1 и 7. Воскресенье — первый день недели, и суббота — седьмой. Procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);Извлекает дату из формата TDateTime и помещает год, месяц и день соответственно в переменные Year, Month и Day. Procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);Извлекает время из формата TDateTime и помещает часы, минуты, секунды, и миллисекунды соответственно в переменные Hour, Min, Sec и MSec. Function EncodeDate(Year, Moth, Day: Word): TDateTime;Возвращает дату в формате TDateTime, полученную из значений параметров Year, Month и Day. Year должен быть между 1 и 9999. Допустимые значения Month — от 1 до 12. Допустимые значения Day — от 1 до 28, 29, 30, или 31, в зависимости от значения Month. Например, возможные значения Day в течение второго месяца (февраля) — от 1 до 28, или от 1 до 29, в зависимости от того, определяет или нет значение Year високосный год. Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError. Возникающее в результате значение — единица плюс число дней между 30/12/1899 и данной датой. Function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;Возвращает время в формате TDateTime, полученное из значений параметров Hour, Min, Sec и MSec. Если значение типизированной константы Time24Hour ложно (False), значения Hour лежат в пределах от 0 до 12, если истинно (True) — от 0 до 23. Допустимые значения Min и Sec — от 0 до 59. Допустимые значения MSec — от 0 до 999. Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError. Function Now: TDateTime;Возвращает текущую дату и время в формате TDateTime (дата + время). Function StrToDate(const S: String): TDateTime;Преобразовывает строковое представление даты в формат TDateTime. Дата в параметре S должна быть записана по правилам Windows, т.е. должна состоять из двух или трех чисел, отделяемых символом, опреде-ленным в глобальной переменной DateSeparator. Порядок следования месяца, дня и года определен в глобальной переменной ShortDateFormat. Возможные комбинации — m/d/y, d/m/y, и y/m/d. Если строка содержит только два числа, это интерпретируется как дата (m/d или d/m) в текущем году. Значения Year между 0 и 99 означают год в текущем столетии. Если строка содержит дату в неверном формате, возбуждается исключительная ситуация EConvertError. Function StrToTime(Const S: String): TDateTime;Преобразовывает строковое представление времени в формат TDateTime. Строка должна состоять из двух или трех чисел, отделяемых символом, определенным в глобальной переменной TimeSeparator. Числа представляют собой часы, минуты, и (необязательно) секунды, в соответствующем порядке. Если строка содержит время в неверном формате, возбуждается исключительная ситуация EConvertError. Function Time: TDateTime;Возвращает текущее время. Function TimeToStr(Time: TDateTime): String;Преобразовывает время из формата TDateTime в строковое представление. Преобразование использует формат, определенный в глобальной переменной LongTimeFormat. Вы можете изменять формат отображения времени, изменяя значения переменных даты и времени (или используя Панель управления Windows). Кодирование и декодирование кириллицы в Delphi для URL (URLDecode, URLEncode)Давно что-то не было статей. В общем, исправляемся DecodeDate e EncodeDate no DelphiVeja neste artigo como utilizar as funзхes DecodeDate e EncodeDate no Delphi para manipular datas.Marcar como lido Lidar com datas й uma necessidade presente na maioria dos sistemas, principalmente os comerciais em que existem diversos cadastros e relatуrios que utilizam datas como filtros. Neste post, veremos como trabalhar com duas das principais funзхes do Delphi para manipular datas: EncodeDate e DecodeDate. DecodeDate й um procedure contido na unit SysUtils que recebe uma data, que se deseja separar, e mais trкs parвmetros por referкncia que receberгo o valor do dia, mкs e ano da data informada. Sua assinatura й a seguinte: Note que os argumentos Year, Month e Day sгo recebidos por referкncia (por isso aparecem precedidos da palavra reservada var), pois serгo alteradas dentro do procedure. EncodeDate tambйm estб contida na unit SysUtils e й uma function que atua de forma inversa а DecodeDate, recebendo trкs argumentos que representam o ano, o mкs e o dia e retorna uma data composta por essas partes. Sua assinatura й a seguinte: Para compreender melhor o funcionamento dessas funзхes, vamos criar uma aplicaзгo VCL Forms no Delphi. Primeiramente, adicione um botгo e trкs labels, que devem ser nomeados como lblDia, lblMes e lblAno. No evento OnClick do botгo, codifique conforme a Listagem 1. Listagem 1: Exemplo de uso do DecodeDate Ao executar a aplicaзгo e clicar no botгo, teremos nos labels, separadamente, o dia, o mкs e o ano da data atual (a funзгo Date retorna um TDateTime com a data atual), semelhante а Figura 1. Figura 1: Exemplo de uso do DecodeDate Para testar o EncodeDate, precisaremos de apenas um label, que chamaremos de lblData e no OnClick do botгo codificaremos de acordo com a Listagem 2. Note que podemos montar uma data a partir de valores separados, desde que esses parвmetros formem uma data vбlida. Listagem 2: Exemplo de uso do EncodeDate O resultado й mostrado na Figura 2. Figura 2: Exemplo de uso do EncodeDate As possibilidades de uso destas funзхes sгo as mais diversas possнveis. Por exemplo, imagine que precisamos montar um relatуrio cujo perнodo de filtro deve ser sempre do primeiro dia do mкs corrente atй o dia atual. Poderнamos usar a funзгo DecodeDate para pegar o ano e mкs atuais, e depois usar o EncodeDate para criar a primeira data com esses valores e o dia 1. Na Listagem 3 temos o cуdigo deste exemplo, seguido do resultado na Figura 3. Listagem 3: Exemplo prбtico de uso Figura 3: Exemplo prбtico de uso Certamente vocк jб precisou trabalhar com datas em suas aplicaзхes. Agora, poderб explorar essas funзхes e utilizб-las em diversas situaзхes. Tecnologias:
Marcar como lido Нестандартное к-во переменных для EncodeDateЗдравствуйте, уважаемые Форумчане. Столкнулся с такой проблемой: |
05.03.2020, 08:35 |
encodedate. Нужно нестандартное решение для сервера нестандартное центрирование Нестандартное окно Нестандартное разрешение |
|
05.03.2020, 10:36 | 2 |
05.03.2020, 10:36 | |
Нестандартное окно с++ Нестандартное окно Нестандартное решение URLEncode и URLDecode в DelphiПри написании программ, взаимодействующих по сети, иногда встает проблема передачи, приема и распознавания символов локального алфавита. Например, при написании клиента для некоего сайта. Мы, собственно, наталкиваемся на отсутствие в Delphi функций URLEncode и URLDecode . Поэтому приходится их писать самим. Ниже приведены упомянутые функции. Чтобы лишний раз не изобретать велосипед. function DigitToHex(Digit: Integer): Char; |