如何判断一个日期是否有效(50分)

  • 主题发起人 主题发起人 gzrencom
  • 开始时间 开始时间
G

gzrencom

Unregistered / Unconfirmed
GUEST, unregistred user!
我遇到这样一个问题

例如有一个日期
adate:string
datetime是10/12/0200

adate:=FormatDateTime('mm/dd/yyyy',datetime);
adate:=DateTimeToStr(datetime);
都不发生异常
但把这个日期放在sqlserver 的datetime类型的field上就发生错误
我现在是想如何知道一个日期是否有效,因为如果我预先知道无效干脆不写上去了


 
最好在程序中统一日期格式,照下面的来就不会与系统格式冲突,在程序中都照你的格式处理.
procedure InitDate;
var s:boolean;
begin
DateSeparator := '/';
shortdateformat:='dd/mm/yyyy';
ShortTimeFormat:='hh:mm:ss';
s:=application.UpdateFormatSettings;
end;
另外,你用Fields[0].AsDateTime的方式直接等于日期型应该不会出错,也最好用这种方法.
你用StrToDateTime函数就应该知道日期是否有效.
try
StrToDateTime..
except
end;
 
把你的日期字符串用StrtoDate()转换成日期型,
如果不是一个合法的日期,则会引起一个异常,你捕捉这个异常就是了。
另如果你想自己判断则要注意闰年、大小月份的问题,也不是很麻烦.
 
//Month 在1--12之间, Day在1--31之间,
var
Year,Month,Day:Word;
begin
DecodeDate(DateTime,Year,Month,Day);
end;
 
自己做个检测函数,在插入SQL之前检测是否有效即可:
fanction tmainform.ifuse(datatime:string):boolean;
begin
result:=false;
try
StrToDateTime(datatime)..
result:=ture;
except
result:=false

end;
end;
 
应该是日期格式的问题,你可以在delphi里直接定义为date类型,在sql语句中
convert sqlserver的datetime类型
 
后退
顶部