希望能有人分享出比較好的計算規則,讓我來寫看看。
我現在的作法是利用 Julian 格式做一下日期的轉換,計算今天到月底總共有幾天,比如 7月15日到 7月底會有16天,再減去今天到月底這段日子有幾天是週六或週日,來得到今天距離月底還剩下幾個交易日。這其實不是個完美的邏輯,只要從今天到月底中間有任何一天的週一到週五之間有放假就會算錯,有或者週六要交易(台灣特有?),也會算錯。
請建立一個數值型的 Fuction,名稱為 _daysLeftMonth,code 如下:
var:now(0),j(0),days2MonthEnd(0),holidays(0);
now=datetojulian(D);
holidays=0;
days2MonthEnd=0;
for j=1 to 50
begin
if Month(JulianToDate(now+j)) > Month(D) or
Year(JulianToDate(now+j)) > Year(D) then
begin
days2MonthEnd=j-1;
break;
end;
if dayofweek(JulianToDate(now+j))=6 or
dayofweek(JulianToDate(now+j))=0 then
holidays=holidays+1;
end;
_daysLeftMonth= days2MonthEnd - holidays;
然後,我用 Print 試了一下,效果如下圖: