delphi 时间计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、
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));
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 ),
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);
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单元有详细的年、月、日、时、分、秒、星期等时间加减函数,如下:
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));
以此类推。

相关文档
最新文档