周末。
把字符串转时间格式的一些的方法小结一下。
DEMO如下:
---------------------------
uses StrUtils;
......
......
var TimeStr:String;
aDate:TDateTime;
begin
TimeStr:='2006/03/05';
TimeStr:=AnsiReplaceStr(TimeStr, '/', '-');
aDate:=StrToDate(TimeStr);
ShowMessage('AnsiReplaceStr(''2006/03/05'')='+ DateToStr(aDate)); //得到'2006-3-5'
TimeStr:='2006/03';
TimeStr:=AnsiReplaceStr(TimeStr, '/', '-');
if Pos('-',TimeStr) = LastDelimiter('-',TimeStr) then //判断是否只有一个分割符
TimeStr:=TimeStr+'-01';
aDate:=StrToDate(TimeStr);
ShowMessage('LastDelimiter(''2006/03'')='+ DateToStr(aDate)); //得到'2006-3-1'
TimeStr:='2006/03/05';
aDate:=VarToDateTime(TimeStr);
ShowMessage('VarToDateTime(''2006/03/05'')='+ DateToStr(aDate)); //得到'2006-3-5'
TimeStr:='2006/03';
aDate:=VarToDateTime(TimeStr);
ShowMessage('VarToDateTime(''2006/03'')='+ DateToStr(aDate)); //得到'2006-3-1'
TimeStr:='2006-03-05';
aDate:=VarToDateTime(TimeStr);
ShowMessage('VarToDateTime(''2006-03-05'')='+ DateToStr(aDate)); //得到'2006-3-5'
{Microsoft Excel 将日期存储为序列号(称为序列值)。
默认情况下,1900年1月1日是序列号1,2008年1月1 日是序列号39,448。
这是因为它距 1900 年1月1日有39,448 天。
Excel 将时间存储为小数,因为时间被看作天的一部分。
因为日期和时间都是数值,因此也可以进行加、减等各种运算。
通过将包含日期或时间的单元格格式设置为“常规”格式,
可以查看以系列值显示的日期和以小数值显示的时间。
Microsoft Excel for Windows 默认的日期系统是 1900 年日期系统。
}
TimeStr:='38781'; //Excel文件中存储的日期格式,距1900 年 1 月1 日 有38781天。
//格式化为'yyyy-mm-dd'的时间格式
if StrToFloatDef(TimeStr, -99999) <> -99999 then
TimeStr := FormatDateTime('yyyy-mm-dd', StrToFloat(TimeStr));
aDate:=VarToDateTime(TimeStr);
ShowMessage('StrToFloatDef(''38781'')='+ DateToStr(aDate)); //得到'2006-3-5'
TimeStr:='2006-03-05'; //yyyy-mm-dd时间格式
if StrToFloatDef(TimeStr, -99999) <> -99999 then
TimeStr := FormatDateTime('yyyy-mm-dd', StrToFloat(TimeStr)); //这句没有必要,仅验证StrToFloatDef。
aDate:=VarToDateTime(TimeStr);
ShowMessage('StrToFloatDef(''2006-03-05'')='+ DateToStr(aDate)); //得到'2006-3-5'
end;
---------------------------
[-完-]
By J.R.Q.
2006/03/05 于穗