讓delphi程式不受WINDOWS日期格式的影響

2021-08-23 14:21:51 字數 1578 閱讀 2591

如果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');

// 設定程式本身所使用的日期時間格式

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, locale_sshortdate, 'yyyy-mm-dd');

// 設定程式本身所使用的日期時間格式

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;

讓delphi程式不受WINDOWS日期格式的影響

如果windows系統的短日期格式為 yyyy m d 執行下面的 會報錯 2013 01 29 00 00 00不是合法的日期 procedure tfrmquerysale.formshow sender tobject varsdate string begin inherited 預設查當天...

讓delphi程式不受WINDOWS日期格式的影響

如果windows系統的短日期格式為 yyyy m d 執行下面的 會報錯 2013 01 29 00 00 00不是合法的日期 procedure tfrmquerysale.formshow sender tobject varsdate string begin inherited 預設查當天...

讓delphi程式不受WINDOWS日期格式的影響

如果windows系統的短日期格式為 yyyy m d 執行下面的 會報錯 2013 01 29 00 00 00不是合法的日期 procedure tfrmquerysale.formshow sender tobject varsdate string begin inherited 預設查當天...