Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
начинающий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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.224 c
15-1328629815
Псарь
2012-02-07 19:50
2013.03.22
Для чего нужен NaN?


15-1350908665
Grimm375
2012-10-22 16:24
2013.03.22
перевести на английский


15-1350725654
Anrey
2012-10-20 13:34
2013.03.22
Трассировка+замер скорости+отправка отчета


6-1261121043
BioHEX
2009-12-18 10:24
2013.03.22
Определение mac-адреса


15-1343893780
Wadimka
2012-08-02 11:49
2013.03.22
Подскажите куда копать