mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 08:29:28 +02:00
* fixed compatibility problem of DateTimeToString
This commit is contained in:
parent
89d569f6f9
commit
36efa2d7b5
@ -551,7 +551,7 @@ var
|
||||
|
||||
procedure StoreFormat(const FormatStr: string);
|
||||
var
|
||||
Token: char;
|
||||
Token,lastformattoken: char;
|
||||
FormatCurrent: pchar;
|
||||
FormatEnd: pchar;
|
||||
Count: integer;
|
||||
@ -581,7 +581,9 @@ var
|
||||
end ;
|
||||
P := P + 1;
|
||||
end ;
|
||||
while FormatCurrent < FormatEnd do begin
|
||||
token:=#255;
|
||||
while FormatCurrent < FormatEnd do
|
||||
begin
|
||||
Token := UpCase(FormatCurrent^);
|
||||
Count := 1;
|
||||
P := FormatCurrent + 1;
|
||||
@ -614,76 +616,88 @@ var
|
||||
end ;
|
||||
'/': StoreStr(@DateSeparator, 1);
|
||||
':': StoreStr(@TimeSeparator, 1);
|
||||
' ', 'C', 'D', 'H', 'M', 'N', 'S', 'T', 'Y','Z' : begin
|
||||
while (P < FormatEnd) and (UpCase(P^) = Token) do
|
||||
' ', 'C', 'D', 'H', 'M', 'N', 'S', 'T', 'Y','Z' :
|
||||
begin
|
||||
while (P < FormatEnd) and (UpCase(P^) = Token) do
|
||||
P := P + 1;
|
||||
Count := P - FormatCurrent;
|
||||
case Token of
|
||||
' ': StoreStr(FormatCurrent, Count);
|
||||
'Y': begin
|
||||
case Count of
|
||||
1: StoreInt(Year, 0);
|
||||
2: StoreInt(Year mod 100, 2);
|
||||
4: StoreInt(Year, 4);
|
||||
end ;
|
||||
end ;
|
||||
'M': begin
|
||||
case Count of
|
||||
1: StoreInt(Month, 0);
|
||||
2: StoreInt(Month, 2);
|
||||
3: StoreString(ShortMonthNames[Month]);
|
||||
4: StoreString(LongMonthNames[Month]);
|
||||
end ;
|
||||
end ;
|
||||
'D': begin
|
||||
case Count of
|
||||
1: StoreInt(Day, 0);
|
||||
2: StoreInt(Day, 2);
|
||||
3: StoreString(ShortDayNames[DayOfWeek]);
|
||||
4: StoreString(LongDayNames[DayOfWeek]);
|
||||
5: StoreFormat(ShortDateFormat);
|
||||
6: StoreFormat(LongDateFormat);
|
||||
end ;
|
||||
end ;
|
||||
'H': begin
|
||||
if Clock12 then begin
|
||||
tmp:=hour mod 12;
|
||||
if tmp=0 then tmp:=12;
|
||||
if Count = 1 then StoreInt(tmp, 0)
|
||||
else StoreInt(tmp, 2);
|
||||
Count := P - FormatCurrent;
|
||||
case Token of
|
||||
' ': StoreStr(FormatCurrent, Count);
|
||||
'Y': begin
|
||||
if Count>2 then
|
||||
StoreInt(Year, 4)
|
||||
else
|
||||
StoreInt(Year mod 100, 2);
|
||||
end;
|
||||
'M': begin
|
||||
if lastformattoken='H' then
|
||||
begin
|
||||
if Count = 1 then
|
||||
StoreInt(Minute, 0)
|
||||
else
|
||||
StoreInt(Minute, 2);
|
||||
|
||||
end
|
||||
else begin
|
||||
if Count = 1 then StoreInt(Hour, 0)
|
||||
else StoreInt(Hour, 2);
|
||||
end ;
|
||||
end ;
|
||||
'N': begin
|
||||
if Count = 1 then StoreInt(Minute, 0)
|
||||
else StoreInt(Minute, 2);
|
||||
end ;
|
||||
'S': begin
|
||||
if Count = 1 then StoreInt(Second, 0)
|
||||
else StoreInt(Second, 2);
|
||||
end ;
|
||||
'Z': begin
|
||||
if Count = 1 then StoreInt(MilliSecond, 0)
|
||||
else StoreInt(MilliSecond, 3);
|
||||
end ;
|
||||
'T': begin
|
||||
if Count = 1 then StoreFormat(timereformat(ShortTimeFormat))
|
||||
else StoreFormat(TimeReformat(LongTimeFormat));
|
||||
end ;
|
||||
'C':
|
||||
begin
|
||||
StoreFormat(ShortDateFormat);
|
||||
if (Hour<>0) or (Minute<>0) or (Second<>0) then
|
||||
begin
|
||||
StoreString(' ');
|
||||
StoreFormat(TimeReformat(ShortTimeFormat));
|
||||
end;
|
||||
end;
|
||||
end ;
|
||||
end ;
|
||||
else
|
||||
begin
|
||||
case Count of
|
||||
1: StoreInt(Month, 0);
|
||||
2: StoreInt(Month, 2);
|
||||
3: StoreString(ShortMonthNames[Month]);
|
||||
4: StoreString(LongMonthNames[Month]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
'D': begin
|
||||
case Count of
|
||||
1: StoreInt(Day, 0);
|
||||
2: StoreInt(Day, 2);
|
||||
3: StoreString(ShortDayNames[DayOfWeek]);
|
||||
4: StoreString(LongDayNames[DayOfWeek]);
|
||||
5: StoreFormat(ShortDateFormat);
|
||||
6: StoreFormat(LongDateFormat);
|
||||
end ;
|
||||
end ;
|
||||
'H': begin
|
||||
if Clock12 then begin
|
||||
tmp:=hour mod 12;
|
||||
if tmp=0 then tmp:=12;
|
||||
if Count = 1 then StoreInt(tmp, 0)
|
||||
else StoreInt(tmp, 2);
|
||||
end
|
||||
else begin
|
||||
if Count = 1 then StoreInt(Hour, 0)
|
||||
else StoreInt(Hour, 2);
|
||||
end ;
|
||||
end ;
|
||||
'N': begin
|
||||
if Count = 1 then StoreInt(Minute, 0)
|
||||
else StoreInt(Minute, 2);
|
||||
end ;
|
||||
'S': begin
|
||||
if Count = 1 then StoreInt(Second, 0)
|
||||
else StoreInt(Second, 2);
|
||||
end ;
|
||||
'Z': begin
|
||||
if Count = 1 then StoreInt(MilliSecond, 0)
|
||||
else StoreInt(MilliSecond, 3);
|
||||
end ;
|
||||
'T': begin
|
||||
if Count = 1 then StoreFormat(timereformat(ShortTimeFormat))
|
||||
else StoreFormat(TimeReformat(LongTimeFormat));
|
||||
end ;
|
||||
'C':
|
||||
begin
|
||||
StoreFormat(ShortDateFormat);
|
||||
if (Hour<>0) or (Minute<>0) or (Second<>0) then
|
||||
begin
|
||||
StoreString(' ');
|
||||
StoreFormat(TimeReformat(ShortTimeFormat));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
lastformattoken:=token;
|
||||
end;
|
||||
else
|
||||
StoreStr(@Token, 1);
|
||||
end ;
|
||||
@ -740,7 +754,10 @@ end;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2005-02-14 17:13:31 peter
|
||||
Revision 1.7 2005-03-10 19:48:27 florian
|
||||
* fixed compatibility problem of DateTimeToString
|
||||
|
||||
Revision 1.6 2005/02/14 17:13:31 peter
|
||||
* truncate log
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user