问题现象:我想大家都遇到过在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; 在使用两位年份时的起始年份。
|
请发表评论