如何计算得到某一天的上个月的25号日期? |
尚未結案
|
hrbshen
一般會員 發表:10 回覆:11 積分:4 註冊:2005-04-12 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:只要返回某日期上个月的25日?
procedure TForm1.Button1Click(Sender: TObject); var d, m, y: word; NewY,NewM:string; TheNewDate: TDateTime; begin DecodeDate(DateTimePicker1.DateTime, y, m, d); if m=1 then begin NewY:=inttostr(y-1); TheNewDate:=StrToDateTime('' NewY '-12-25'); showmessage(DateTimeTostr(TheNewDate)); end else begin NewM:=inttostr(m-1); TheNewDate:=StrToDateTime(inttostr(y) '-' NewM '-25'); showmessage(DateTimeTostr(TheNewDate)); end end;是不是您所要的? ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
hrbshen
一般會員 發表:10 回覆:11 積分:4 註冊:2005-04-12 發送簡訊給我 |
谢谢。
它能够解决我的问题。
VB中有对年、月、日进行加减数的函数。
不知道DELPHI中有没有此类函数?
再次感谢。
引言: 您好:只要返回某日期上个月的25日?procedure TForm1.Button1Click(Sender: TObject); var d, m, y: word; NewY,NewM:string; TheNewDate: TDateTime; begin DecodeDate(DateTimePicker1.DateTime, y, m, d); if m=1 then begin NewY:=inttostr(y-1); TheNewDate:=StrToDateTime('' NewY '-12-25'); showmessage(DateTimeTostr(TheNewDate)); end else begin NewM:=inttostr(m-1); TheNewDate:=StrToDateTime(inttostr(y) '-' NewM '-25'); showmessage(DateTimeTostr(TheNewDate)); end end;是不是您所要的? ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
您好:日期为double可以直接进行加减,可参考:
Var Date1, Date2: TdateTime; DiffDate: Integer; begin Date1 := StrToDate('2004-10-8'); Date2 := StrToDate('2005-10-8'); DiffDate := Trunc(Date2)-Trunc(Date1); ShowMessage('相差﹕' IntToStr(DiffDate) '日'); end; 或: var i : double; begin i := now - StrToDate('2005-7-20'); ShowMessage(FloatToStr(i)); end; 或 var year,month,day,h,m,s,ms,days:word; str1,str2:string; begin str1:='2004-10-8 14:23:55'; str2:='2008-5-8 23:13:24'; days:=DaysBetween(strtodatetime(str2),strtodatetime(str1)); year:=days div 365; month:=(days mod 365) div 30; day:=(days mod 30); DecodeTime(strtodatetime(str2)-strtodatetime(str1),h,m,s,ms); showmessage(format('%d年; ',[year]) format('%d月; ',[month]) format('%d日; ',[day]) format('%d小时; ',[h]) format('%d分钟; ',[m]) format('%d秒; ',[s]) format('%d微秒',[ms])); end; 几个实例,不同的方法。或YearsBetween(const ANow, AThen: TDateTime): Integer; MonthsBetween(const ANow, AThen: TDateTime): Integer; …… 等 使用上可参考帮助! ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 直接使用IncMonth函數﹐參數為正值時表示增加月份﹐參數為負值時表示減少月份﹐求出上月的月份﹐然后再將日期改為25即可﹐以您的要求範例如下﹕
Var DT: TDateTime; Y,M,D: Word; begin DT := IncMonth(Now, -1); DecodeDate(DT, Y, M, D); D := 25; DT := EncodeDate(Y, M, D); ShowMessage(DateToStr(DT); end;================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/07/28 18:46:12
------
忻晟 |
IunCode
一般會員 發表:0 回覆:4 積分:0 註冊:2005-07-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |