以下是临时为你作的一个函数,基本能完成你的要求
{
本函数完成将 年份(两位).月份(一位或两位) 格式的
字符串转换成对应的日期型的数据
参数 Value 是传入的字符型日期
AFlg 转换标志
0 表示将不完整的传入日期
按照传入日期的月份的第一天转换
1 表示将不完整的传入日期
按照传入日期的月份的最后一天转换
也可以指定一个非0的任何值
AFlg 默认只为 0
返回值 返回转换后的日期型数据
}
function Format_Date(const Value: String;
const AFlg: Integer = 0): TDate;
var
l: Integer;
FYear, FMonth, FDay: Word;
begin
l := Length(Value);
Result := -1;
//验证数据的有效性
if (l > 3) and (l < 6) and (Value[3] = '.') then
begin
FYear := StrToInt(Copy(Value, 1, 2));
//此处用来将两位的年份数据补成四位的年份
//规则是:如果原来两位的年份小于 30 则认为是 20** 年
//否则认为是 19** 年
if FYear < 30 then
FYear := 2000 + FYear
else
FYear := 1900 + FYear;
FMonth := StrToInt(Copy(Value, 4, l - 3));
//根据传入的标志,设置应该是本月的第一天还是最后一天
if AFlg = 0 then
FDay := 1
else
FDay := DaysInAMonth(FYear, FMonth); //取指定月份的最后一天
Result := EncodeDate(FYear, FMonth, FDay); //根据 年、月、日 转换
end;
end;