对于TDatetime怎样只截取日期,不要时间(50分)

  • 主题发起人 主题发起人 NewLearner
  • 开始时间 开始时间
N

NewLearner

Unregistered / Unconfirmed
GUEST, unregistred user!
我想比较两个DATETIME变量的日期是否相同,所以只能取他们的日期部分,请教各位
 
showmessage(Datetostr(DateTimePicker1.Date));
 
将DATETIME转换,当字符串处理啊~
 
FormatDateTime('YYYY-MM-DD',DateTimePicker1.date);
 
DecodeDate(TdataTime,y,m,d)
再比较M
 
FormatDateTime('yymmdd',now);
//输出格式为020110,六位日期
 
if DateToStr(A)=DateToStr(B)
 
var
d1,d2:TDate;
begin
d1:=StrToDate(DateToStr(DATETIME1);
d2:=StrToDate(DateToStr(DATETIME1);
..........................
end;
 
代码:
if Trunc(Date1) = Trunc(Date2) then
 
FormatDateTime('YYYY-MM-DD',now);
 
用Trunc截取!!
 
BCB: if (int(date1)==int(date2))
{....
 
为什么我从数据库取日期时:result:=strtodate(tmpquery.fieldbyname('rq').AsString)
会出错:'2002-01-10 11:10:10'is not a valid date
 
为什么要用“result:=strtodate(tmpquery.fieldbyname('rq').AsString)”呢?
你可以直接用result:=tmpquery.fieldbyname('rq').AsDateTime
 
很简单,把DateTimePicker的Time属性删除或改为0:00:00即可
 
NewLearner,
真巧,我今天才用到符合你答案的函数——楼上的兄弟的答案都对但都麻烦。:)
我程序中的例子:
function curTime: string;
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
timeStr, dayStr: string;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);//分解年月日
dayStr := '今天是'+inttostr(Year)+'年'+inttostr(Month)+'月'+
inttostr(Day)+'日';DecodeTime(Present, Hour, Min, Sec, MSec);
DecodeTime(Present, Hour, Min, Sec, MSec);//分解时分秒和毫秒
timeStr := ' 现在时间:' + inttostr(Hour)+'时'+inttostr(Min)+'分';
Result := dayStr + ' ' + timeStr;
end;

应用:
MainFm.Caption:=curTime;

呵呵,拿分来
 
多人接受答案了。
 
后退
顶部