delphi的日期相加/delphi日期运算

delphi的日期相加/delphi日期运算


分类: DELPHI

我想实現 2007-08-13 12:00:00 与45 的结果变为 2007-08-13 12:45:00
delhpi中日期型数据是可以直接相加减的。
如果是字符串,用StrToDateTime转成TDateTime类型,再相加,加完之后在用DateTimeToStr转回去
日期是一个Double类型的浮点数,年月日是它的整型部分,时分秒是它的小数部分。
var
a:TDateTime;
begin
a:=StrToDateTime('2007-08-13 12:00:00');
a:=a + 45*(1/24/60);//一天等于24小时,一小时60分钟
ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss',a));
end;

同理,如果要加多少天,你就直接a := a + N 即可,整数部分就是天。
Delphi中日期时间型就是Float型,操作可以和Float一样。整数是以天为单位的,小数部分算法就是 1小时=1/24;1小时X分就是 1/24 + (1/24)/60*x。其它的自己算吧
DateUtils.pas中有相关的函数:
function IncDay(const AValue: TDateTime;
const ANumberOfDays: Integer): TDateTime;
begin
Result := AValue + ANumberOfDays;
end;

function IncHour(const AValue: TDateTime;
const ANumberOfHours: Int64): TDateTime;
begin
Result := ((AValue * HoursPerDay) + ANumberOfHours) / HoursPerDay;
end;

function IncMinute(const AValue: TDateTime;
const ANumberOfMinutes: Int64): TDateTime;
begin
Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
end;

function IncSecond(const AValue: TDateTime;
const ANumberOfSeconds: Int64): TDateTime;
begin
Result := ((AValue * SecsPerDay) + ANumberOfSeconds) / SecsPerDay;
end;

function IncMilliSecond(const AValue: TDateTime;
const ANumberOfMilliSeconds: Int64): TDateTime;
begin
Result := ((AValue * MSecsPerDay) + ANumberOfMilliSeconds) / MSecsPerDay;
end;
把秒换算成天,然后相加得到的就是你要的结果了。
謝謝大家了,我自己琢磨了以下,想法和crazycock一樣.[:D][:D]
Delphi里有现成的函数可以实现日期加减,是在DateUtils单元里的。
function IncYear(const AValue: TDateTime;
const ANumberOfYears: Integer = 1): TDateTime;
// function IncMonth is in SysUtils
function IncWeek(const AValue: TDateTime;
const ANumberOfWeeks: Integer = 1): TDateTime;
function IncDay(const AValue: TDateTime;
const ANumberOfDays: Integer = 1): TDateTime;
function IncHour(const AValue: TDateTime;
const ANumberOfHours: Int64 = 1): TDateTime;
function IncMinute(const AValue: TDateTime;
const ANumberOfMinutes: Int64 = 1): TDateTime;
function IncSecond(const AValue: TDateTime;
const ANumberOfSeconds: Int64 = 1): TDateTime;
function IncMilliSecond(const AValue: TDateTime;
const ANumberOfMilliSeconds: Int64 = 1): TDateTime;

你可能感兴趣的:(delphi的日期相加/delphi日期运算)