加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

让delphi程序不受WINDOWS日期格式的影响

发布时间:2020-12-15 09:58:41 所属栏目:大数据 来源:网络整理
导读:如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期 procedure TFrmQuerySale.FormShow(Sender: TObject); var sDate: string; begin inherited; // 默认查当天的销售数据 sDate := FormatDateTime('yyyy

如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期
procedure TFrmQuerySale.FormShow(Sender: TObject);
var
sDate: string;
begin
inherited;
// 默认查当天的销售数据
sDate := FormatDateTime('yyyy-mm-dd',Now);
DateTimePicker1.DateTime := StrToDateTime(sDate + ' 00:00:00');
DateTimePicker2.DateTime := StrToDateTime(sDate + ' 23:59:59');
Find(Trim(edtBillId.Text),DateTimePicker1.DateTime,DateTimePicker2.DateTime);
edtBillId.SetFocus;
end;

如何解决?
procedure TdmCommonFun.SetSysDateFormat;
begin
// 设置WINDOWS系统的短日期的格式
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE,'yyyy-MM-dd');

Application.UpdateFormatSettings := False;
// 设定程序本身所使用的日期时间格式
LongDateFormat := 'yyyy-MM-dd';
ShortDateFormat := 'yyyy-MM-dd';
LongTimeFormat := 'hh:nn:ss';
ShortTimeFormat := 'hh:nn:ss';
DateSeparator := '-';
TimeSeparator := ':';
end;
在程序初始化的时候执行上面的代码,不论WINDOWS的短日期格式怎样设置都不再影响
DELPHI程序。

?xe2以上版本,代码得改改:

procedure SetSysDateFormat;
var
? fs: TFormatSettings;
begin
? // 设置WINDOWS系统的短日期的格式
? SetLocaleInfo(LOCALE_SYSTEM_DEFAULT,'yyyy-MM-dd');
? Application.UpdateFormatSettings := False;
? // 设定程序本身所使用的日期时间格式
? fs.LongDateFormat := 'yyyy-MM-dd';
? fs.ShortDateFormat := 'yyyy-MM-dd';
? fs.LongTimeFormat := 'hh:nn:ss';
? fs.ShortTimeFormat := 'hh:nn:ss';
? fs.DateSeparator := '-';
? fs.timeSeparator := ':';
end;


转自:http://www.cnblogs.com/hnxxcxg/archive/2013/01/30/2882672.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读