Главная страница
    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.103 c
15-1347556136
Dimka Maslov
2012-09-13 21:08
2013.03.22
Обработка исключений


15-1353245447
Artem
2012-11-18 17:30
2013.03.22
Простой парсинг


2-1330375381
LDV
2012-02-28 00:43
2013.03.22
Access Violation on AssignFile(fp, file_name)


2-1329472416
AlxAY
2012-02-17 13:53
2013.03.22
Как в отдельном потоке вызвать функцию из основного без зависаний


2-1328770345
Gu
2012-02-09 10:52
2013.03.22
Cmd





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский