Преобразование даты типа TDateTime в дату прописьюDelphi , Синтаксис , ПреобразованияПреобразование даты типа TDateTime в дату прописью
Автор: LexusR { **** UBPFD *********** by delphibase.endimus.com **** >> преобразование даты типа TDateTime в дату прописью преобразование даты типа TDateTime в дату прописью типа : "четырнадцатое ноября две тысячи третьего года" Зависимости: Windows,SysUtils Автор: LexusR, ICQ:41627622, Novosibirsk Copyright: LexusR Дата: 12 декабря 2003 г. ***************************************************** } const MonthNames: array[1..12] of string = ('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'); NamesOfThousand0: array[1..2] of string = ('тысячного', 'двухтысячного'); NamesOfThousand: array[1..2] of string = ('одна тысяча', 'две тысячи'); NamesOfHandreds0: array[1..9] of string = ('сотого', 'двухсотого', 'трехсотого', 'четырехсотого', 'пятисотого', 'шестисотого', 'семисотого', 'восьмисотого', 'девятисотого'); NamesOfHandreds: array[1..9] of string('сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'); NamesOfTens00: array[1..3] of string('десятое', 'двадцатое', 'тридцатое'); NamesOfTens0: array[1..9] of string('десятого', 'двадцатого', 'тридцатого', 'сорокового', 'пятидесятого', 'шестидесятого', 'семидесятого', 'восьмидесятого', 'девяностого'); NamesOfTens: array[2..9] of string = ('двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'); NamesOfFistTen0: array[1..9] of string = ('одинадцатое', 'двенадцатое', 'тринадцатое', 'четырнадцатое', 'пятнадцатое', 'шестнадцатое', 'семнадцатое', 'восемьнадцатое', 'девятнадцатое'); NamesOfFistTen: array[1..9] of string = ('одинадцатого', 'двенадцатого', 'тринадцатого', 'четырнадцатого', 'пятнадцатого', 'шестнадцатого', 'семнадцатого', 'восемьнадцатого', 'девятнадцатого'); NamesOfUnits0: array[1..9] of string = ('первое', 'второе', 'третье', 'четвертое', 'пятое', 'шестое', 'седьмое', 'восьмое', 'девятое'); NamesOfUnits: array[1..9] of string = ('первого', 'второго', 'третьего', 'четвертого', 'пятого', 'шестого', 'седьмого', 'восьмого', 'девятого'); function ConvertDateToString(Date: TDateTime): string; var year, month, day: word; th, hn, tn, un: word; begin DecodeDate(Date, year, month, day); // разбираем число tn := day div 10; un := day mod 10; if un = 0 then result := NamesOfTens00[tn] else if tn = 0 then result := NamesOfUnits0[un] else if tn = 1 then result := NamesOfFistTen0[un] else result := NamesOfTens[tn] + ' ' + NamesOfUnits0[un]; // разбираем месяц result := result + ' ' + MonthNames[month]; // разбираем год th := year div 1000; hn := year mod 1000 div 100; tn := year mod 1000 mod 100 div 10; un := year mod 1000 mod 100 mod 10; if ((hn = 0) and (tn = 0) and (un = 0)) then begin result := result + ' ' + NamesOfThousand0[th] + ' года'; exit; end else result := result + ' ' + NamesOfThousand[th]; if hn > 0 then begin if ((tn = 0) and (un = 0)) then begin result := result + ' ' + NamesOfHandreds0[hn] + ' года'; exit; end else result := result + ' ' + NamesOfHandreds[hn]; end; if un = 0 then result := result + ' ' + NamesOfTens0[tn] else if tn = 0 then result := result + ' ' + NamesOfUnits[un] else if tn = 1 then result := result + ' ' + NamesOfFistTen[un] else result := result + ' ' + NamesOfTens[tn] + ' ' + NamesOfUnits[un]; result := result + ' года' end; Код на Delphi, предназначенный для конвертации значения TDateTime в строку, представляющую дату на русском языке. Процесс работы следующий:
Годовая часть строится путем парсинга значения года в тысячи, сотни, десятки и единицы. Например, если год равен 2003, то он будет распарсен следующим образом:
Часть тысячи будет "двухтысячного", а часть единиц - "третьего". Наконец, строка даты строится путем конкатенирования всех этих частей вместе. Пример использования кода:
Вывод будет выглядеть примерно так: "четырнадцатое ноября две тысячи третьего года". Обратите внимание, что этот код предполагает, что региональные настройки системы установлены на русском языке. Если вы хотите поддерживать другие языки, вам нужно добавить дополнительные массивы и логику для обработки различных форматов дат. Преобразование даты типа TDateTime в дату прописью: функция ConvertDateToString преобразует дату в строку, представляющую собой полную дату с указанием дня, месяца и года. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Преобразования ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |