小幫手您好,
想於警示當中跑資料,寫入判斷當日是否結算日(第三個星期三),我希望在屬於該月第三個星期三的時候,就在v83這個欄位標記1,預設為0。
我寫的判斷方式,並非直接去讀取日期,然後判斷是否為[第三周]&[星期三],因為觀察任何一年的月曆可以發現,每月第三個星期三並不一定是在第三周。例如2020年的5月份,該月的第三個星期三是2020/05/20,但這應該是五月的第四周了。
所以我是希望寫一個流程來判斷,當天是否是當月第三個星期三。寫法邏輯如下:
1. 判斷當天是否星期三,如果是,則往前檢查20天(往前抓20天,因為第三個星期三的位置最晚在21號,不可能位於更後面。),目的是判斷裡面有幾個星期三。
2. 判斷前面抓出來的20個日子,是否屬於同一個月份。
3. 如果同一個月份,那麼判斷這些日子裏面,有幾個星期三。
程式如下
variable:v1(0),v83(0),m(0),i(0);
v1 = DaysToExpirationTF;
//Value92 = DateValue(currentdate, "WM"); //這是月份內的第幾周
value93 = DateValue(date, "DW"); //星期幾
Value94 = DateValue(date, "M"); //月份值
if value93=3 and DayOfMonth(date)=21 then v83=1
else
if value93=3 and DayOfMonth(date)<22 then
m=0;
for i=1 to 20
begin
value95=dateadd(date,"D",-i); //開始往前取日期數字值
if datevalue(value95,"M")=value94 and datevalue(value95,"DW")=3 then //判斷在同一個月內且星期三
m+=1;
end;
if value93=3 and m=2 then v83=1
else v83=0;
;
Print(file("儲存路徑C:\....."),
SymbolName, //印出今天日期
date,
numtostr(v1[1], 0), ",",
numtostr(v83[1], 0), ",");
看了結果,還差一點點。標記的日期,變成了都是每個月的第三個星期四,不知道我是哪裡寫錯了。

請問該怎麼改呢? 謝謝。

7 評論