📄 myldbdateformat.pas
字号:
04: s := 'IV';
05: s := 'V';
06: s := 'VI';
07: s := 'VII';
08: s := 'VIII';
09: s := 'IX';
10: s := 'X';
11: s := 'XI';
12: s := 'XII';
end;}
//dfDDD: s := Format('%d',[DayOfTheYear(dt)]);
dfDD: begin
d := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end;
dfD: begin
if str[start+1] in ['0'..'9'] then
begin
d := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end
else
begin
d := StrToInt(copy(str,start,1));
Inc(Start,1);
end
end;
//dfDAY: s:=FormatDateTime('dddd',dt);
//dfDY: s:=FormatDateTime('ddd',dt);
//dfD: s := Format('%d',[DayOfTheWeek(dt)]);
dfH24: begin
if str[start+1] in ['0'..'9'] then
begin
h := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end
else
begin
h := (StrToInt(copy(str,start,1)));
Inc(Start);
end
end;
dfHH24: begin
h := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end;
dfHH12,
dfHH: begin
if str[start+1] in ['0'..'9'] then
begin
h := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end
else
begin
h := (StrToInt(copy(str,start,1)));
Inc(Start,1);
end
end;
dfNN: begin
mi := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end;
dfN: begin
if str[start+1] in ['0'..'9'] then
begin
mi := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end
else
begin
mi := (StrToInt(copy(str,start,1)));
Inc(Start,1);
end
end;
dfSS: begin
s := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end;
dfS: begin
if str[start+1] in ['0'..'9'] then
begin
s := (StrToInt(copy(str,start,2)));
Inc(Start,2);
end
else
begin
s := (StrToInt(copy(str,start,1)));
Inc(Start,1);
end
end;
dfAMPM: begin
if UpperCase(copy(str,start,2))='PM' then
h := h + 12
else
if UpperCase(copy(str,start,2))<>'AM' then
raise EMYLDBException.Create(30129, ErrorGAmPmExpected, [copy(str,start,2)]);
Inc(Start,2);
end;
dfText: begin
Inc(Start, Length(FDateFormat[i].Text));
end;
else
Inc(Start, Length(FDateFormat[i].Text));
//raise Exception.Create('Unsupported DateFormatType');
end;
end;
if (y=0) or (m=0) or (d=0) then
begin
y:=1899; m:=12; d:=30;
end;
Result := EncodeDate(y,m,d) + EncodeTime(h,mi,s,0);
end;
function TDateFormater.ToString(dt: TDateTime): String;
var
i: Integer;
s: string;
begin
Result := '';
for i:=0 to Length(FDateFormat)-1 do
begin
case FDateFormat[i].TokenType of
dfYYYY,
dfYEAR: s := FormatDateTime('yyyy',dt);
dfYY: s := FormatDateTime('yy',dt);
dfQ: s := Format('%d',[(((MonthOf(dt)-1) div 3) + 1)]);
dfMONTH: s := FormatDateTime('mmmm',dt);
dfMON: s := FormatDateTime('mmm',dt);
dfMM: s := FormatDateTime('mm',dt);
dfM: s := FormatDateTime('m',dt);
dfRM: case MonthOf(dt) of
01: s := 'I';
02: s := 'II';
03: s := 'III';
04: s := 'IV';
05: s := 'V';
06: s := 'VI';
07: s := 'VII';
08: s := 'VIII';
09: s := 'IX';
10: s := 'X';
11: s := 'XI';
12: s := 'XII';
end;
dfDDD: s:=FormatDateTime('ddd',dt);
dfDD: s := FormatDateTime('dd',dt);
dfD: s := FormatDateTime('d',dt);
dfDAY: s:=FormatDateTime('dddd',dt);
dfDY: s := Format('%d',[DayOfTheYear(dt)]);
dfDW: s := Format('%d',[DayOfTheWeek(dt)]);
dfHH24: s := FormatDateTime('hh',dt);
dfHH,
dfHH12: s := Format('%.2d', [HourOfTheDay(dt) mod 12]);
dfH24: s := FormatDateTime('h',dt);
dfH,
dfH12: s := Format('%d', [HourOfTheDay(dt) mod 12]);
dfNN: s := FormatDateTime('nn',dt);
dfN: s := FormatDateTime('n',dt);
dfSS: s := FormatDateTime('ss',dt);
dfS: s := FormatDateTime('s',dt);
dfAMPM: begin
if HourOfTheDay(dt) < 12 then
s := AM
else
s := PM
end;
dfText: s := FDateFormat[i].Text;
else
raise Exception.Create('Unknown DateFormatType');
end;
Result := Result + s;
end;
end;
function TDateFormater.GetStringMaxSize: Integer;
var
i, s: Integer;
begin
Result := 0;
for i:=0 to Length(FDateFormat)-1 do
begin
case FDateFormat[i].TokenType of
dfYYYY,
dfYEAR: s := 4;
dfYY: s := 2;
dfQ: s := 1;
dfMONTH: s := 9;
dfMON: s := 3;
dfMM: s := 2;
dfM: s := 2;
dfRM: s := 4;
dfDDD: s := 3;
dfDD: s := 2;
dfDAY: s := 12;
dfDY: s := 2;
dfD: s := 2;
dfDW: s := 2;
dfH24,
dfH,
dfH12,
dfHH24,
dfHH,
dfHH12: s := 2;
dfNN,
dfN: s := 2;
dfS,
dfSS: s := 2;
dfAMPM: s := 2;
dfText: s := length(FDateFormat[i].Text);
else
raise Exception.Create('Unknown DateFormatType');
end;
Result := Result + s;
end;
end;
function TDateFormater.GetDataType: TMYLDBAdvancedFieldType;
var
i: Integer;
bDate: Boolean;
bTime: Boolean;
begin
bDate := False;
bTime := False;
for i:=0 to Length(FDateFormat)-1 do
begin
case FDateFormat[i].TokenType of
dfYYYY,
dfYEAR,
dfYY,
dfQ,
dfMONTH,
dfMON,
dfMM,
dfM,
dfRM,
dfDDD,
dfDD,
dfDAY,
dfDY,
dfD,
dfDW:
bDate := True;
dfH24,
dfH,
dfH12,
dfHH24,
dfHH,
dfHH12,
dfNN,
dfN,
dfS,
dfSS,
dfAMPM:
bTime := True;
end;
end;
if ((not bDate) and bTime) then
Result := aftTime
else
if ((not bTime) and bDate) then
Result := aftDate
else
Result := aftDateTime
end;
var i: integer;
begin
// INIT DateFormatReservedWordsMaxLength value
DateFormatReservedWordsMaxLength := 0;
for i:=0 to DateFormatReservedWordsCount-1 do
if length(DateFormatReservedWords[i]) > DateFormatReservedWordsMaxLength then
DateFormatReservedWordsMaxLength := length(DateFormatReservedWords[i]);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -