办公室里一台机器的区域和语言选项是“中文(台湾)”,在这台机器上用下面语句可以把字符串变成时间:
d:=StrToDate('2005/7/23');
但是另一台机器的区域和语言选项是“英文(美国)”,程序运行到上面的语句就报错了。我想达到的目的是不管机器的区域和语言选项是什么,都要把'2005/7/23'这种格式的字符串变成时间。看了一下Delphi的帮助文件StrToDate函数还有一个TFormatSettings类型的参数,估计用它应该可以达到目的,但找了半天也没找到使用TFormatSettings的例子,小弟希望得到各位的帮助。
d:=StrToDate('2005/7/23');
但是另一台机器的区域和语言选项是“英文(美国)”,程序运行到上面的语句就报错了。我想达到的目的是不管机器的区域和语言选项是什么,都要把'2005/7/23'这种格式的字符串变成时间。看了一下Delphi的帮助文件StrToDate函数还有一个TFormatSettings类型的参数,估计用它应该可以达到目的,但找了半天也没找到使用TFormatSettings的例子,小弟希望得到各位的帮助。
解决方案 »
- 请问TStrings是否有大小限制?
- DELPHI能否动态定义变量?
- 一个有关dbgrid显示的问题?
- 关于多线程的问题。
- 插入数据后,DBGrid的显示问题
- 我的项目文件的delphi 6菜单project---options...不能打开,不知为什么?
- 请各位帮忙!!
- 请教函数用法 EnumChildWindows ,EnumChildProc
- listview为什么滚动条不出现?
- 如何将一个字段的结果,分多列显示...
- 使用TBatchMove控件批量复制数据
- 问一个关于delphi7写的webservice的端口问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function MyStrToDate(S: string): TDateTime;
var
ys, ms, ds: string;
yw, mw, dw: Word;
i: Integer;
begin
Result := 0;
if S = '' then Exit;
i := Pos('/', S);
ys := Copy(S, 1, i - 1);
S := Copy(S, i + 1, length(S));
i := Pos('/', S);
ms := Copy(S, 1, i - 1);
S := Copy(S, i + 1, length(S));
ds := S;
try
yw := StrToInt(ys);
mw := StrToInt(ms);
dw := StrToInt(ds);
Result := EncodeDate(yw, mw, dw);
except
Result := 0;
end;
end;
var
s,s1 :string;
slst : TStringList;
i: integer;
y,m,d:word;
begin
s:='2005/5/6';
slst := TStringList.Create;
ExtractStrings(['/'],[' '],pchar(s),slst); y:=strtoint(slst[0]);
m:=strtoint(slst[1]);
d:=strtoint(slst[2]);
showmessage(datetostr(EncodeDate(y,m,d)));end;
ShortDateFormat := 'yyyy/mm/dd'; //输出格式 这里的‘/’如果改成‘-’,下面showmessage就变成‘-’
Date := StrToDate('2005/02/01'); //转换
ShowMessage(DateToStr(Date)); 看到'2005/02/01'你自己试试,不然不保险,实际上就是DateSeparator不同系统可能不一样
另外想问一下,TStringList类型的变量不过不free会不会自动free?
看见 qizhanfeng(glacier)的帖子里用到了TStringList,突然想到了这个问题。