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

如何找出該月共有幾週WeekOfTheMonth

 
oll24286
一般會員


發表:7
回覆:7
積分:2
註冊:2004-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-31 14:49:47 IP:211.22.xxx.xxx 訂閱

各位大大:

如題,

例2006年8月份共有5週

我是先找出該月的最後一天是幾號,然後用下列方式去找出

我利用WeekOfTheMonth(2006/08/31)===>5

但是WeekOfTheMonth(2006/10/31)=====>答案竟是1

Why??這個函數有問題,

還是另外有解決方式??

麻煩大家了!!!

menfox
一般會員


發表:1
回覆:10
積分:2
註冊:2006-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-31 17:52:59 IP:211.21.xxx.xxx 未訂閱

應該不算是 bug, 那是老美 計算 週別的 '怪邏輯', 2006/10/31 已經歸到 11月的第一週了, 所以 call WeekOfTheMonth 會回傳 1.

若希望依我們(台式計算法)計算週別的邏輯, 那可能唯有 修改 DateUtils 中的 DecodeDateMonthWeek function了!

------
Hi! It's Menfox!
oll24286
一般會員


發表:7
回覆:7
積分:2
註冊:2004-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-31 19:03:26 IP:211.22.xxx.xxx 訂閱
那請問...還有其它的方法嗎??
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-06 09:36:58 IP:210.68.xxx.xxx 未訂閱
自己寫個副程式就解決了.
先求出每個月的第一天是星期幾, 及該月份有幾天. 然後一個簡單的判斷式就能得到答案了.
不用為了 API 得到得結果和預期不同而傷腦筋...
------
水瓶男的blog: http://791909.blogspot.com
ehuae
一般會員


發表:0
回覆:1
積分:0
註冊:2008-07-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-28 09:56:27 IP:123.155.xxx.xxx 訂閱
写了这一个,试度看!
------------------------------------------------------------------------
function getWeekOfTheMonth(N: TDateTime): Integer;
var
M,K:Word;
begin
{日|一|二|三|四|五|六}
M := 7- DayOfTheWeek(StartOfTheMonth(N));//星期六是几号?
K := DayOf(N); //当天是几号?
//如果当天在第一周;返回1;
if K<=M then
Result := 1
else
Result := ((K-m) div 7) 2;
end;
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-07-28 11:15:33 IP:220.141.xxx.xxx 訂閱
自寫的大型月曆範例,至於你的問題,或許能有所啟發。參考參考。
http://delphi.ktop.com.tw/download.php?download=upload/488d39794669c_MonthCale.zip
------
努力會更接近成功
系統時間:2024-11-25 6:52:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!