線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:918
推到 Plurk!
推到 Facebook!

請教:實際的月份

尚未結案
mirage
初階會員


發表:40
回覆:101
積分:28
註冊:2004-01-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-11 15:20:13 IP:203.70.xxx.xxx 未訂閱
請問先進們: var yymm1 : String; begin yymm1 := '2003/02'; Label1.Caption := IntToStr(MonthsBetween(Now, StrToDate(yymm1))); end; 1.編譯出現'2002/01'不是有效日期,請問要如何修改.. 2.求出yymm1 3個月,如何做程式最簡潔.. 謝謝!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-11 15:38:07 IP:203.204.xxx.xxx 未訂閱
引言: 請問先進們: var yymm1 : String; begin yymm1 := '2003/02'; Label1.Caption := IntToStr(MonthsBetween(Now, StrToDate(yymm1))); end; 1.編譯出現'2002/01'不是有效日期,請問要如何修改.. 2.求出yymm1 3個月,如何做程式最簡潔.. 謝謝!
mirage 你好 1.完整的日期須包含年、月及日,'2003/02'只有年月如何轉成日期型態?改成'2003/02/01'就可以 2.由於每個月份的天數不同,所以不適合用天數來計算,如下程式算法應該比較合理
Var
  yymm1:String;
  Date1 : TDate ;
  y,m,d : Word;
Begin
  yymm1 := '2003/02/01';
  Date1 := StrToDate(yymm1);
  DecodeDate(Date1,y,m,d);
  Inc(m,3);
  If m > 12 Then Begin
    inc(y);
    m := m-12;
  End;
  While True Do Begin
    Try
      Result := EncodeDate(y,m,d);
      Break;
    Except
      Dec(d);//遇到小月或二月時該月份沒有 31日或29日日須減1
    End;
  End;  
End;
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-11 22:02:38 IP:61.62.xxx.xxx 未訂閱
補充一下, 可以使用 IncMonth 來進行增加月份, 會更容易!
mirage
初階會員


發表:40
回覆:101
積分:28
註冊:2004-01-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-12 17:08:40 IP:61.221.xxx.xxx 未訂閱
引言: 補充一下, 可以使用 IncMonth 來進行增加月份, 會更容易!
IncMonth(now, 3); 謝謝二位先進..
系統時間:2024-06-28 18:46:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!