我正在使用Delphi BDS2006如何格式化日期(01/10/2011)看起来像
1st Oct 2011
我尝试过使用
ShowMessage(FormatDateTime('ddd mmm yyyy', now));
我得到的消息是Sat Oct 2011
ddd
给了我Sat
而不是1st
我想以类似方式将st,nd,rd,th
添加到日期
是否有内置程序或功能来执行此操作或我必须手动检查日期并为其指定后缀
我目前正在使用此
case dayof(now)mod 10 of
1 : days:=inttostr(dayof(dob))+'st';
2 : days:=inttostr(dayof(dob))+'nd';
3 : days:=inttostr(dayof(dob))+'rd';
else days:=inttostr(dayof(dob))+'th';
end;
答案 0 :(得分:4)
Delphi没有内置任何形式的日子。你必须自己做。像这样:
function DayStr(const Day: Word): string;
begin
case Day of
1,21,31:
Result := 'st';
2,22:
Result := 'nd';
3,23:
Result := 'rd';
else
Result := 'th';
end;
Result := IntToStr(Day)+Result;
end;
答案 1 :(得分:4)
这是与语言环境无关的英文版本。 GetShortMonth就在那里,因为ShortMonthNames
从区域设置中获取月份缩写。
function GetOrdinalSuffix(const Value: Integer): string;
begin
case Value of
1, 21, 31: Result := 'st';
2, 22: Result := 'nd';
3, 23: Result := 'rd';
else
Result := 'th';
end;
end;
function GetShortMonth(const Value: Integer): string;
begin
case Value of
1: Result := 'Jan';
2: Result := 'Feb';
3: Result := 'Mar';
4: Result := 'Apr';
5: Result := 'May';
6: Result := 'Jun';
7: Result := 'Jul';
8: Result := 'Aug';
9: Result := 'Sep';
10: Result := 'Oct';
11: Result := 'Nov';
12: Result := 'Dec';
end;
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
var
Day: Word;
Month: Word;
Year: Word;
begin
DecodeDate(DateTimePicker1.Date, Year, Month, Day);
ShowMessage(Format('%d%s %s %d', [Day, GetOrdinalSuffix(Day), GetShortMonth(Month), Year]));
end;