一、Delphi里有没有直接对日期中的年、月、日、时、分、秒进行加减的函数(类似于VB中的DateAdd(interval, number, date))?
二、下面函数使用是否有问题,为什么返回的值不对
uses DateUtils;procedure TForm1.Button1Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1 := strtodatetime('2004-09-01 01:34:21');
time2 := strtodatetime('2004-09-01 01:38:21');
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
返回4
procedure TForm1.Button1Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1 := strtodatetime('2004-09-01 01:34:21');
time2 := strtodatetime('2004-09-01 01:37:21');
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
返回2
正确值应该是3,
SecondsBetween()函数也有这种问题,有时正确,有时又会误差一秒。
这种问题应该如何处理?
二、下面函数使用是否有问题,为什么返回的值不对
uses DateUtils;procedure TForm1.Button1Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1 := strtodatetime('2004-09-01 01:34:21');
time2 := strtodatetime('2004-09-01 01:38:21');
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
返回4
procedure TForm1.Button1Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1 := strtodatetime('2004-09-01 01:34:21');
time2 := strtodatetime('2004-09-01 01:37:21');
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
返回2
正确值应该是3,
SecondsBetween()函数也有这种问题,有时正确,有时又会误差一秒。
这种问题应该如何处理?
解决方案 »
- 怎么跟gpid-usb-hs卡通信
- 请问这样的*.xsd文件怎么去解析啊,请各位现身说法。还有就是delphi中的xml数据绑定咋用?
- C/S问题
- dbgrid中用回车键代替Tab键
- 求教桌面小精灵的写法!功能如下:
- 奇怪,显示Sybase中的汉字为乱码?
- TWinsock是个什么控件?知道的说个,分虽不多,感谢了!
- 请问各位兄弟,又是一个很怪很怪的小问题,thanks!!!
- 各位大虾.100分求助,关于动态实现MAINMENU的问题!急急急急急!!!!
- 提问无人回答,我只能点名求救了,checy,cobi,tikkpeng,kingron,focus等所有热心的高手请进!
- 有关fastreport的问题
- 累死了~~~~~~~~
uses DateUtilsIncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1): TDateTime;
IncMonth(const Date: TDateTime; NumberOfMonths: Integer = 1):TDateTime;
IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1): TDateTime;
IncMinute(const AValue: TDateTime; const ANumberOfMinutes: Int64 = 1): TDateTime;
IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime;
var
time1,time2:TDateTime;
begin
time1:=encodetime(1,34,21,0);
time2:=encodetime(1,37,21,0);
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
结果为值3
----------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1:=encodetime(1,34,21,0);
time2:=encodetime(1,36,21,0);
ShowMessage(IntToStr(MinutesBetween(time2, time1)));
end;
返回结果为1
看来不是strtodatetime('2004-09-01 01:34:21')转化时的不精确导致的
begin
Result:=ceil(MinuteSpan(ANow, AThen));
end;
------------------------------------
uses DateUtils,math;function MinutesBetween1(const ANow, AThen: TDateTime): Integer;
begin
Result:=ceil(MinuteSpan(ANow, AThen));
end;procedure TForm1.Button2Click(Sender: TObject);
var
time1,time2:TDateTime;
begin
time1 := strtodatetime('2004-09-01 01:34:21');
time2 := strtodatetime('2004-09-01 01:38:21');
ShowMessage(IntToStr(MinutesBetween1(time2, time1)));
end;返回结果为5,也不对
time2 := timeof(strtodatetime('2004-09-01 02:38:0'));
ShowMessage(inttostr(Minuteof(time2)-MinuteOf(time1)));