让delphi程序不受WINDOWS日期格式的影响
2015-06-25 14:17
591 查看
http://www.cnblogs.com/hnxxcxg/archive/2013/01/30/2882672.html
如果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, LOCALE_SSHORTDATE, '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;
如果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, LOCALE_SSHORTDATE, '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;
procedure TForm1.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; procedure TForm1.UpdateSysDateTime; var systemtime:Tsystemtime; DateTime:TDateTime; begin //1、修改前时间 GetLocalTime(SystemTime); //读取系统时间 DateTime:=SystemTimeToDateTime(SystemTime); //把API的TSystemTime格式 转化为 Delphi的TDateTime格式 Edit3.Text:=DateTimeToStr(DateTime); //显示当前系统的时间 //2、要修改的时间 DateTime:=StrToDateTime(Edit1.text); //获得时间(TDateTime格式) DateTimeToSystemTime(DateTime,systemtime); //把Delphi的TDateTime格式转化为API的TSystemTime格式 SetLocalTime(SystemTime); //设置系统时间 //3、修改后的时间 GetLocalTime(SystemTime); //读取系统时间 DateTime:=SystemTimeToDateTime(SystemTime); //把API的TSystemTime格式 转化为 Delphi的TDateTime格式 Edit2.Text:=DateTimeToStr(DateTime); //显示当前系统的时间 end; procedure TForm1.FormCreate(Sender: TObject); begin SetSysDateFormat; end; procedure TForm1.Button1Click(Sender: TObject); begin UpdateSysDateTime; end;
相关文章推荐
- Delphi中Chrome Chromium、Cef3学习笔记(二)
- Delphi中Chrome Chromium、Cef3学习笔记(一)
- delphi日期格式化免操作系统依赖单元
- Delphi 安卓开发 小米MIUI系统备忘
- delphi 控件 combobox常识
- delphi Text,combox 输入框的统一验证
- Delphi调用java开发的WebService,传入参数出错
- 转:delphi异常捕获try except语句 和 try finally语句用法
- 推荐几个delphi的CSDN博客
- 编写delphi类
- Delphi正则表达式处理集合
- delphi中xmldocument对象使用方法
- Delphi XE的firemonkey获取当前文件所在路径的方法
- Delphi FireDAC 连接mysql
- SynEdit(Delphi XE7)的安装和基本使用
- Delphi 使用CreateProcess创建进程并弹出进程PID值 (转)
- Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码) (转)
- Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)
- delphi 动态更改屏幕分辨率(转)
- delphi如何让程序最小化到任务栏(转)