字符串转时间格式

周末。

把字符串转时间格式的一些的方法小结一下。

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 于穗

你可能感兴趣的:(windows,Excel,Microsoft,J#)