Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

формат даты   Найти похожие ветки 

 
начинающий41   (2012-06-28 11:29) [0]

подскажите есть ли какая нибудь функция в delphi которая переводит формат даты как "01.01.2012" на 01 января 2012 г


 
Anatoly Podgoretsky ©   (2012-06-28 11:40) [1]

> начинающий41  (28.06.2012 11:29:00)  [0]

И на остальные несколько тысяч языков.


 
Rouse_ ©   (2012-06-28 11:48) [2]

function GetFormatedDate(Value: TDateTime): string;
var
 ST: TSystemTime;
 Buffer: array of Char;
 Len: Integer;
begin
 Result := "";
 DateTimeToSystemTime(Value, ST);
 Len := GetDateFormat(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, @ST, nil, nil, 0);
 if Len > 0 then
 begin
   SetLength(Buffer, Len);
   GetDateFormat(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, @ST, nil, @Buffer[0], Len);
   Result := PChar(Buffer);
 end;
end;


 
Rouse_ ©   (2012-06-28 11:49) [3]

Показывать будет в дефолтовой системной локали, если нужно в других локалях - меняй первый параметр.


 
Омлет ©   (2012-06-28 12:06) [4]

 DateTimeToString(Str, "dd mmmm yyyy", StrToDate("21.12.2012"));
 Str := Str + " г";

procedure InitMonths;
const _M: array[1..12]of string = ("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
var i: integer;
begin
 for i := 1 to 12 do LongMonthNames[i] := _M[i];
end;

initialization
 InitMonths;


 
Плохиш ©   (2012-06-28 16:33) [5]

Фи, в 21м веке живём уже :-)

const
     CSIDL_RECENT = $0011;
     SUBLANG_RUSSIAN = $01;
     LANG_SYSTEM_RUSSIAN = (SUBLANG_RUSSIAN shl 10) or LANG_RUSSIAN;
     LOCALE_RUSSIAN = (SORT_DEFAULT shl 16) or LANG_SYSTEM_RUSSIAN;
...
var
     wsDate:     WideString;
     idx:        Integer;
...
 idx := 127;
 SetLength(wsDate, idx);
 idx := GetDateFormatW(LOCALE_RUSSIAN, DATE_LONGDATE, nil, nil{"dd MMMM yyyy"}, @wsDate[1], idx);
 MessageBoxW(0, @wsDate[1], "Date", MB_OK);


 
Rouse_ ©   (2012-06-28 21:14) [6]


> Плохиш ©   (28.06.12 16:33) [5]
> Фи, в 21м веке живём уже :-)

Даже в 21 веке размер блока данных, требуемого функцией, извне константарно не задают :)


 
NoUser   (2012-06-28 23:19) [7]


> Rouse_ ©   (28.06.12 11:48) [2]

А зачем через буфер, может сразу
SetLength(Result, Len);


 
Rouse_ ©   (2012-06-28 23:52) [8]

Удалено модератором
Примечание: пардон - не о том :)


 
Rouse_ ©   (2012-06-29 00:09) [9]


> NoUser   (28.06.12 23:19) [7]

Ой блин, пардон, вообще не правильно прочитал...
Да, так тоже можно, но финализирующий ноль все равно придется отсечь, иначе могут быть проблемы при дальнейшей конкатенации строк, где упремся в ноль.


 
Плохиш ©   (2012-06-29 16:27) [10]


> Rouse_ ©   (28.06.12 21:14) [6]

Ну да, ну да, сейчас я буду не только кусок из старейшего пробного, первого попавшегося под руку кода копировать, но и время тратить на его причёсывание. А как же дать вопрошающему ещё и подумать? :-)


 
Юрий Зотов ©   (2012-06-29 17:32) [11]

> Rouse_ ©   (28.06.12 11:48) [2]

Ошибка в первой же строке кода.


 
jack128_   (2012-06-30 01:10) [12]


> Юрий Зотов ©   (29.06.12 17:32) [11]

в этих двух:
function GetFormatedDate(Value: TDateTime): string;
Result := "";

нету ошибок. в какой конкретно.


 
jack128_   (2012-06-30 01:10) [13]


> в какой конкретно ошибка?


 
Юрий Зотов ©   (2012-06-30 22:48) [14]


> jack128_   (30.06.12 01:10) [13]

В заголовке функции.


 
DVM ©   (2012-06-30 22:55) [15]


> Rouse_ ©   (29.06.12 00:09) [9]


>  иначе могут быть проблемы при дальнейшей конкатенации строк,
>  где упремся в ноль.

с конкатенацией проблем как раз не будет, дельфийской длинной строке ей глубоко фиолетово на ее содержимое, а вот при первом же приведении к PChar будут проблемы.


 
turbouser ©   (2012-06-30 23:07) [16]


> Юрий Зотов ©

Буквоед ;)


 
Германн ©   (2012-07-01 01:56) [17]


> turbouser ©   (30.06.12 23:07) [16]
>
>
> > Юрий Зотов ©
>
> Буквоед ;)

С чего ты взял, что суть ошибки в отсутствии сдвоенной буквы t в имени функции?
:)


 
Германн ©   (2012-07-01 02:09) [18]

Странно что АП не полностью "отреагировал" на вопрос в топике.


 
Юрий Зотов ©   (2012-07-01 03:39) [19]


> turbouser ©   (30.06.12 23:07) [16]

Это же не я съел букву.
:o)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.066 c
1-1300638375
maxstels
2011-03-20 19:26
2013.03.22
Автоматические заполнение заготовок процедур


15-1331654585
Unknown user
2012-03-13 20:03
2013.03.22
Альтернатива GetTickCount


2-1346928623
Levran
2012-09-06 14:50
2013.03.22
Динамический запрос


15-1340346931
AV
2012-06-22 10:35
2013.03.22
Похоже что-то с машинкой.. Все так медленно с утра


3-1282759487
newman
2010-08-25 22:04
2013.03.22
Выборка данных в зависимости от пользователя MS SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский