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

Вниз

Преобразование даты   Найти похожие ветки 

 
Разведка   (2014-01-05 18:31) [0]

Как правильно задать маску, преобразования даты, что бы получить корректный результат
задаю такую функцию DateTimeToString(S,"dd mmmm yyyy",DTPicker.DateTime); она возвращает такой результат 5 Январь 2014 все вроде правильно, кроме падежа, мне то нужно чтобы было 5 Января 2014
Может уже и там таджики вкалывают?
Как сделать маску что бы правильно получить результат?


 
Разведка   (2014-01-05 21:58) [1]

Вот и ответ, пока сам не сделаешь никто лучше не сделает...

Вариант 1

var S: string;

   DateTimeToSystemTime(DTPicker.DateTime, st);
   SetLength(S,GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,@ST,PChar("dd MMMM yyyy"),Nil,0));
   GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,@ST,PChar("dd MMMM yyyy"),PChar(S),Length(S));
   S := #171+StringReplace(S," ",#187+" ",[rfIgnoreCase])+"г.";
   ShowMessage(S);


Вариант 2
function TForm1.GetDateStrFromDT(DT: TDateTimePicker): String;
begin
 Result:="";
 SetLength(Result,30);
 DTPicker.GetTextBuf(@Result[1],Length(Result));
 Result := Lq + Result;
 Result := StringReplace(Result," ",Rq+" ",[rfIgnoreCase]);
end;


 
Разведка   (2014-01-05 22:01) [2]

Вот так выглядит результат «05» Января 2014г. как мне и нужно для в ставки его в офис документ *.doc


 
Кшиштоф Маннергейм   (2014-01-05 22:43) [3]

Можно заменить глобальные переменные в SysUtils.

var LongMonthNames: array[1..12] of string;


 
antonn ©   (2014-01-05 22:46) [4]


> Можно заменить глобальные переменные в SysUtils.
>
> var LongMonthNames: array[1..12] of string;

только модуль желательно скопировать в папку с проектом, чтобы не править глобально


 
Кшиштоф Маннергейм   (2014-01-05 22:51) [5]

Да не надо в самом модуле менять

Можно просто присвоить где-нибудь новые значения.
Например, в секции initialization проекта.
Или еще где-то.
Важно сделать это 1 раз.

LongMonthNames[1] := "янаваря";
LongMonthNames[2] := "февраля";

и т.д.

А если нужно отформатировать дату, использовать:

FormatDateTime ("dd/mmmm/yyyy г.", DT);


 
Кшиштоф Маннергейм   (2014-01-05 23:01) [6]

Пардон:  FormatDateTime ("dd mmmm yyyy г.", DT);


 
Разведка   (2014-01-06 18:55) [7]

А зачем что то переделывать "святые святых" системные юниты, если и так решение уже было найдено, к тому же я раз работку веду и на робете(если время есть) и дома и было бы не удобно если бы у меня юниты были переделаны в одном месте то пришлось бы переделывать их и в других местах.


 
Кшиштоф Маннергейм   (2014-01-10 16:29) [8]

2 Разведка   (06.01.14 18:55) [7]

Я не предлагал переделывать системные юниты.
Просто в системном юните объявлены глобальные переменные.
Которым разработчик вправе присвоить новые значения.


 
Inovet ©   (2014-01-10 19:23) [9]

> [8] Кшиштоф Маннергейм   (10.01.14 16:29)
> Я не предлагал переделывать системные юниты.

Дежавю у вас доих или у меня?


 
Плохиш ©   (2014-01-10 20:16) [10]

В winapi есть функция делающая желаемое преобразование.


 
Юрий Зотов ©   (2014-01-10 23:37) [11]

Посмотрите GetDateFormat


 
DVM ©   (2014-01-11 00:11) [12]

http://www.delphimaster.net/view/2-1192915547
http://www.delphimaster.net/view/2-1269966073



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

Текущий архив: 2014.08.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
15-1389186800
Aleks2014
2014-01-08 17:13
2014.08.03
Как восстановить настройки Editor options-Color?


2-1379581711
Вася
2013-09-19 13:08
2014.08.03
получить по имени переменной ее значение


15-1389385804
Юрий
2014-01-11 00:30
2014.08.03
С днем рождения ! 11 января 2014 суббота


2-1379683140
P.Golf
2013-09-20 17:19
2014.08.03
Переход с D7 на D2010


15-1389417411
Viktor Makarov
2014-01-11 09:16
2014.08.03
Помогите пожалуйста написать код для этой задачи)