比比看谁的方法最简单:判断一个datetime类型的字段存储的值是否是今天?(50分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
decodeDate有点繁琐
想取巧,用
var
nowdate,databaseDate:Tdate;
begin
nowdate:=now;
databaseDate:=dataset1.fieldbyname('AcceptTime').value;
if nowdate=databaseDate then
showmessage('相等');
end;
用showmessage观察,databaseDate和nowDate都是2001-5-11,但是就是不把哪个
“相等”显示出来。
看来这样是不行的。
呵呵,看看您的了
 
now 是 TDatetime 类型
 
tdatetime 有分和秒。

你要决定是否精确到秒或分
上面的问题就出在这里
用formatdatatime 解决它
 
你只取了一个now的date部分给nowdate,而accepttime是datetime型的,想show出相等来,
不行的吧。要不你select出来的时候只取accepttime的yyyymmdd部分。
 
楼上的说的有理,now 是带小时的
 
var
nowdate,databaseDate:string;
begin
nowdate:=datetostr(now);
databaseDate:=formatdatetime('yyyy-mm-dd',dataset1.fieldbyname('AcceptTime').asdatetime)
if nowdate=databaseDate then
showmessage('相等');
end;
 
if FormatDateTime('yyyy-mm-dd',nowdate)=FormatDateTime('yyyy-mm-dd',databaseDate) then
 
千中元啊,我一直以为你是高手呢,怎么高手也有问简单问题的时候啊:)
 
高手也不是全能嘛,别让他不好意思问问题了,哈哈
 
如下:
if trunc(nowdate)=trunc(databaseDate) then
showmessage('相等');
 
yanzi兄,
我的目标是成为高手,现在还连低手都不如(和没手差不多,嘿嘿)
to all,
需要的是“最简单的”方法,目前看来是DoubleWood兄的最简单(我还没试呢)。
我自己写的是
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Nowdate := inttostr(Year)+inttostr(Month)+inttostr(day);
Present:= DataModule3.adsNewUser.fieldbyname('Accepttime').value;
DecodeDate(Present, Year, Month, Day);
LastDate :=inttostr(Year)+inttostr(Month)+inttostr(day);
if NowDate=LastDate then..
呵呵,又臭又长,不过还能正常运行
 
yanzi兄?
faint
...zzzZZZ
 
Delphi中有取日期函数Date
if DataModule3.adsNewUser.fieldbyname('Accepttime').value = Date then
...
 
看来已经解决了
我也一直以为千中元是高手呢:)
 
刘兄,
accepttime字段可是datetime类型阿
yanzi,
我随便说下而已,何必那么认真呢:)
 
tdate,tdatetime,ttime都是double类型,date函数取当前时间的整数部分,now取当前时间,
time取当前时间的小数部分。
int(date)=int(now)
date<>now
 
不建议使用int函数,因为int返回的是浮点数,程序中应该
尽量避免两个浮点数的比较。
而且trunc要比int快10%~20%:p
 
DoubleWood的方法最好
 
0<=datetime-date<1如何呢
 
冠军只有一个:)
 
后退
顶部