[FileMaker] 如何計算哪個月份有幾天?

「蛤,計算每個月有幾天?」

感覺好像廢話,小時候就背過了不是嗎?

「1月大,2月小,3月大,4月小……,12月大。」

大月 31 天,小月 30 天,除了 7、8 二月都是大月 30天,而 2 月一般是 28 天,四年一潤 29 天,這些特別要注意之外,其他基本都有規則可循。

現在的問題在於,在 FileMaker 裡面,應該不需要去記憶這些規則,潤年也不需要背誦,就用計算式來決定即可,從以下的技巧,我們可以學到一些計算的函數跟方法。

先開啟 Data Viewer

使用的 Function 函數

  • Let
  • Date ( month ; day ; year )

Let 函數原來的結構較為複雜,肉眼不易觀看,我喜歡調整成下圖這樣表示,比較容易閱讀。

關於日期的顯示,各個國家地區有不同的習慣方式(Ex. 年/月/日 or 月/日/年…等),用 Date 函數可以統一日期的輸入,不致出錯。

PS. 以下計算可能產生誤會的地方,是「~year」前方的「~」符號,這是我的變數記號,讓自己方便識別而已,並沒有規定一定要這樣使用,你可以選擇自己的方式,統一即可。

螢幕快照 2018-03-02 下午8.22.31.png

計算的邏輯

我們不確定每個月有幾天,但一定會有第一天 1 號,所以我們用「下一個月 1 號」-「該月 1 號」,得到的値正好就是該月「總天數」。

Let ( [ 
         ~year = 2018; 
         ~month = 2; 
         ~firstDate = Date ( ~month ; 1 ; ~year ); 
         ~nextFirstDate = Date ( ~month + 1 ; 1 ; ~year) 
];  
         ~nextFirstDate - ~FirstDate
)

「~year」設定爲 2018 年,「~month」設定爲 2 月

「~firstDate」代表 2018 年 2 月 1 號,「~nextFirstDate」代表 2018 年 3 月 1 號

兩者相減即得到 2018 年 2 月 的「天數」:28

螢幕快照 2018-03-02 下午8.43.09.png

更換 「~year」的値

2019 年 2月「天數」:28

螢幕快照 2018-03-02 下午8.44.29.png

更換 「~year」的値

2020 年 2月「天數」:29!

2020 年爲潤年!

螢幕快照 2018-03-02 下午8.47.34.png

這個案例並不難,主要的目的有三個:

  1. 熟悉 Let 函數的使用
  2. 熟悉 Date 函數的使用
  3. 可以應用到未來不同的日期計算

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s