在DateUtils(d7)里,有如下几个现成的函数 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; 你把增加的值设置成-1就可以得到前一(或N)年/月/日的日期了 扩冲例子如下: var str:string; d:TDateTime; begin d:=now; //yyyy-m-d h:n:s:zz 格式化组成:年-月-日 时:分:秒:毫秒 ShowMessage('当前时间:'+DateTimeToStr(d)); str:=FormatDateTime('yyyy-mm-dd h:n:s:zz',d-1); //取得当前时间减一天 ShowMessage('当前时间减一天:'+str); str:=FormatDateTime('yyyy-mm-dd h:n:s:zz',d-30); //取得当前时间减一月 ShowMessage('当前时间减一月:'+str); str:=FormatDateTime('yyyy-mm-dd h:n:s:zz',d-1/24); //取得当前时间减一小时 ShowMessage('当前时间减一小时:'+str); str:=FormatDateTime('yyyy-mm-dd h:n:s:zz',d-1/24/60); //取得当前时间减一分钟 ShowMessage('当前时间减一分钟:'+str); str:=FormatDateTime('yyyy-mm-dd h:n:s:zz',d-1/24/60/1000/60); //取得当前时间减一毫秒 ShowMessage('当前时间减一毫秒:'+str); end;