Использую FormatDateTime('dddddd',StartDateTime), получаю "10 Май 2018 г", тогда как Windows 10 отображает "10 мая 2018 г".
Эту проблему можно решить стандартными средствами FPC 3.0.4 / Lazarus 1.8.0?
Модератор: Модераторы
StringReplace(StringReplace(StringReplace('11 Май 2018',
'ь ', 'я ', [rfReplaceAll]), // январь, февраль, апрель, июнь, июль, сентябрь, октябрь, ноябрь, декабрь
'т ', 'та ', [rfReplaceAll]), // март, август
'й ', 'я ', [rfReplaceAll]) // май
with DefaultFormatSettings do if LongMonthNames[1]='Январь' then
begin
LongMonthNames[1]:='января';
LongMonthNames[2]:='февраля';
LongMonthNames[3]:='марта';
LongMonthNames[4]:='апреля';
LongMonthNames[5]:='мая';
LongMonthNames[6]:='июня';
LongMonthNames[7]:='июля';
LongMonthNames[8]:='августа';
LongMonthNames[9]:='сентября';
LongMonthNames[10]:='октября';
LongMonthNames[11]:='ноября';
LongMonthNames[12]:='декабря';
end;
function GetGenStrDate(aDate: TDate): string;
var i: integer;
s: TSystemTime;
a: PWideChar;
begin
DateTimeToSystemTime(aDate, s);
a := GetMem(42);
i := GetDateFormatW(LOCALE_USER_DEFAULT, 0, @s, 'd MMMM yyyy', a, 42);
Result := StrPas(a);
FreeMem(a, 42);
end;
function GetGenStrDate(aDate: TDate): widestring;
var
pass: integer;
s: TSystemTime;
begin
DateTimeToSystemTime(aDate, s);
for pass := 0 to 1 do
SetLength(result, GetDateFormatW(LOCALE_USER_DEFAULT, 0, @s, 'd MMMM yyyy', PWideChar(result), length(result)));
end;
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39