问题-[Delphi7]程序在WIN7电脑上的日期错误处理
2015-07-17 15:32
483 查看
问题现象:我想大家都遇到过在XP上没有问题的日期格式,到了WIN7之后就不行了。
问题原因:因为在WIN7中增加了新的日期格式,但是老的DELPHI未处理(如果我说错了,希望高人指点)。
问题处理:
function StrToDateWin7(DateStr: string): TDateTime;
var
T: TDateTime;
Fs: TFormatSettings;
begin
try
Fs.ShortDateFormat := 'yyyy-mm-dd';
Fs.DateSeparator := '-';
T := StrToDate(DateStr, Fs);
except
T := StrToDate('1899-01-01', Fs);
end;
Result := T;
end;
PS:
DateSeparator :Char
日期分隔符,用于分隔年月日
TimeSeparator :Char
时间分隔符,用于分隔小时,分钟,秒
ShortDateFormat:String
区域设置中短日期格式的定义。
LongDateFormat :String
区域设置中长日期格式的定义。
ShortTimeFormat:String
区域设置中短时间格式的定义。
LongTimeFormat :String
区域设置中长时间格式的定义。
TimeAMString :String
用来表示上午的字符串
TimePMString :String
用来表示下午的字符串
ShortMonthNames:array[1..12] of String;
用于缩略表示月份名称的数组,就是在使用FormatDateTime时显示的mmm标识的字符串
LongMonthNames:array[1..12] of String;
用于完整表示月份名称的数组,就是在使用FormatDateTime时显示的mmmm标识的字符串
ShortDayNames :array[1..7] of String;
用于缩略表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
LongDayNames :array[1..7] of String;
用于完整表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
TwoDigitYearCenturyWindow:Word = 50;
在使用两位年份时的起始年份。
问题原因:因为在WIN7中增加了新的日期格式,但是老的DELPHI未处理(如果我说错了,希望高人指点)。
问题处理:
function StrToDateWin7(DateStr: string): TDateTime;
var
T: TDateTime;
Fs: TFormatSettings;
begin
try
Fs.ShortDateFormat := 'yyyy-mm-dd';
Fs.DateSeparator := '-';
T := StrToDate(DateStr, Fs);
except
T := StrToDate('1899-01-01', Fs);
end;
Result := T;
end;
PS:
DateSeparator :Char
日期分隔符,用于分隔年月日
TimeSeparator :Char
时间分隔符,用于分隔小时,分钟,秒
ShortDateFormat:String
区域设置中短日期格式的定义。
LongDateFormat :String
区域设置中长日期格式的定义。
ShortTimeFormat:String
区域设置中短时间格式的定义。
LongTimeFormat :String
区域设置中长时间格式的定义。
TimeAMString :String
用来表示上午的字符串
TimePMString :String
用来表示下午的字符串
ShortMonthNames:array[1..12] of String;
用于缩略表示月份名称的数组,就是在使用FormatDateTime时显示的mmm标识的字符串
LongMonthNames:array[1..12] of String;
用于完整表示月份名称的数组,就是在使用FormatDateTime时显示的mmmm标识的字符串
ShortDayNames :array[1..7] of String;
用于缩略表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
LongDayNames :array[1..7] of String;
用于完整表示星期名称的数组,就是在使用FormatDateTime时显示的ddd标识的字符串
TwoDigitYearCenturyWindow:Word = 50;
在使用两位年份时的起始年份。
相关文章推荐
- Delphi XE8安卓(android)定位纠偏、地图简单调用、检测开启系统GPS
- 问题-[Delphi]MainFrame.pas(4340): E2036 Variable required
- 问题-[Delphi]在对GRID设置单击为编辑时,其他GRID可以,但有一个GRID不行?
- 问题-[Delphi]PixelFormat 图像颜色的数据格式
- 问题-[Delphi]SendMessageTimeout调用后卡住点击任务栏还会出现窗体处理
- 问题-[Delphi]断点后怎么设置条件
- 问题-[DelphiXE2]提示第三控件不存在
- 问题-[DelphiXE2]编译程序体积大的问题
- 问题-[delphi2007、2010]无法二次启动,报EditorLineEnds.ttr被占用,进程一直有bds.exe?
- 问题-[Delphi]通过Map文件查找内存地址出错代码所在行
- 问题-[DelphiXE7]新建的安桌模拟器运行程序闪退
- 问题-[Delphi]用LoadLibrary加载DLL时返回0的错误
- 教程-Delphi 调用控制面板设置功能
- [delphi技术]Delphi常见图象格式转换技术
- 教程-Delphi7设置功能表
- 教程-Delphi资源文件(全面分析于使用)
- 问题-Delphi记忆工程打开的单元(XE2设置项)
- 教程-Delphi MSComm 实时串口通讯
- 教程-Delphi源代码--后延函数
- delphi 默认字体修改