2022年delphi时间计算 .pdf
一、TDateTime 类型怎么进行加减运算?比如我要在当前的日期时间上再加30分钟,得到一个新的日期时间,应该怎么运算?答: TDateTime 类型可直接进行运算(*前 n 秒的 TDateTime 是多少?前 n 分钟的 TDateTime 是多少?前 n 小时的 TDateTime 是多少?前 n 天的 TDateTime 是多少?前 n 周的 TDateTime 是多少?答案:now-n/3600/24 now-n/60/24 now-n/24 now-n*1 now-n*7 *) Memo1.Clear; Memo1.Lines.Add( 当前时间: + DatetimeToStr(Now); Memo1.Lines.Add( 前20秒的 TDateTime 是多少? + DatetimeToStr(Now-20/3600/24); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - Memo1.Lines.Add( 前2分钟的 TDateTime 是多少? + DatetimeToStr(Now-2/60/24); Memo1.Lines.Add( 前2小时的 TDateTime 是多少? + DatetimeToStr(Now-2/24); Memo1.Lines.Add( 前2天的 TDateTime 是多少? + DatetimeToStr(Now-2*1); Memo1.Lines.Add( 前2周的 TDateTime 是多少? + DatetimeToStr(Now-2*7); 运行结果:当前时间: 2011-12-9 下午 03:39:06 前20秒的 TDateTime 是多少? 2011-12-9 下午 03:38:46 前2分钟的 TDateTime 是多少? 2011-12-9 下午 03:37:06 前2小时的 TDateTime 是多少? 2011-12-9 下午 01:39:06 前2天的 TDateTime 是多少? 2011-12-7 下午 03:39:06 前2周的 TDateTime 是多少? 2011-11-25 下午 03:39:06 二、有控件DateTimePicker1 ,假如DateTimePicker1 值为2004-7-5 , 请问:如何求出1.本月第一日 ( 即2004-7-1 ), 2.本月最后一日 ( 即2004-7-31 ), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 3.上个月当日(即2004-6-5 ) ,4.上个月最后一日 ( 即2004-6-30 ), 5.上年当月当日 ( 即2003-7-5 ). 6.上年上月当日 ( 即2003-6-5 ). 7.上年上月最后一日 ( 即2003-6-30 ). 最头痛的问题是各个月的天数不同,还要考虑是否闰年的“二月份”!DataUtils.unit. 你所有的都有。 。Var Year1,Month1,Day1: Word; begin DecodeDate(DateTimePicker1.date,year1,month1,day1); Datetimepicker1.Date:= EncodeDAte(Year1,Month1,1); /本月第一天end; var Y,M,D:Word; NewDate:TDateTime; begin DecodeDate(DateTime, Y, M, D); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - NewDate:= 1.本月第一日 ( 即2004-7-1 ), EncodeDate(Y,M,1) 2.本月最后一日 ( 即2004-7-31 ), EncodeDate(Y,M+1,1)-1 (就是下个月 1号的前一天)3.上个月当日(即2004-6-5 ) ,EncodeDate(Y,M-1,D) 4.上个月最后一日 ( 即2004-6-30 ),EncodeDate(Y,M,1)-1 5.上年当月当日 ( 即2003-7-5 ).EncodeDate(Y-1,M,1) 6.上年上月当日 ( 即2003-6-5 ).EncodeDate(Y-1,M-1,D) 7.上年上月最后一日 ( 即2003-6-30 ).EncodeDate(Y-1,M,1)-1 如果碰到求 1月份的上一个月怎么改?2004-1-05 的上个月当日 ( 即2003-12-05). EncodeDate(Y,M-1,D) ;/这个做法会出错哦三、delphi 中使用 datetimepicker ,怎么进行 HH,MM,SS 的加减计算?delphi 中 DateUtils 单元有详细的年、月、日、时、分、秒、星期等时间加减函数,如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 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; 举例:比如, 分钟相加的话 使用 IncMinute ,加30分钟分钟edit1.text := DatetimetoStr(IncMinute(datetimepicker.time,30); 以此类推。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -