想依據日期的值顯示星期幾
設定計算公式,依據日期的值顯示星期幾。
準備
-
在表單中配置日期欄位或日期與時間欄位。
欄位代碼設定為與欄位名稱相同(日期或日期與時間)。 -
在表單中配置單行文字方塊欄位。欄位代碼可自由設定。
-
在進階設定「小數位數」中設定1以上的值。
詳情請參閱以下頁面。
關於欄位代碼
設定數值的有效位數和進位方式
計算公式
在單行文字方塊欄位的設定對話方塊勾選[自動計算],並設定以下計算公式。
日期欄位和日期與時間欄位的計算公式不同。
配置日期欄位時
IF( ( ( (日期 / 60 / 60 / 24) - 0) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 0) / 7 ) , 0) = 0 , "週四",
IF( ( ( (日期 / 60 / 60 / 24) - 1) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 1) / 7 ) , 0) = 0 , "週五",
IF( ( ( (日期 / 60 / 60 / 24) - 2) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 2) / 7 ) , 0) = 0 , "週六",
IF( ( ( (日期 / 60 / 60 / 24) - 3) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 3) / 7 ) , 0) = 0 , "週日",
IF( ( ( (日期 / 60 / 60 / 24) - 4) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 4) / 7 ) , 0) = 0 , "週一",
IF( ( ( (日期 / 60 / 60 / 24) - 5) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 5) / 7 ) , 0) = 0 , "週二",
IF( ( ( (日期 / 60 / 60 / 24) - 6) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 6) / 7 ) , 0) = 0 , "週三","不適用"
)
)
)
)
)
)
)
配置日期與時間欄位時
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 0) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 0) / 7 ) , 0) = 0 , "週四",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 1) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 1) / 7 ) , 0) = 0 , "週五",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 2) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 2) / 7 ) , 0) = 0 , "週六",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 3) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 3) / 7 ) , 0) = 0 , "週日",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 4) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 4) / 7 ) , 0) = 0 , "週一",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 5) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 5) / 7 ) , 0) = 0 , "週二",
IF( ( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24) ) - 6) / 7 ) - ROUNDUP(( ( (ROUNDDOWN((日期與時間+(60 * 60 * 9))/ 60 / 60 / 24)) - 6) / 7 ) , 0) = 0 , "週三","不適用"
)
)
)
)
)
)
)
計算公式的解說
在kintone的計算公式中,「日期」和「日期與時間」的值被視為UNIX時間。UNIX時間是指從世界協調時間(UTC)1970年1月1日上午0時起至今經過的秒數。
詳情請參閱以下頁面。
日期、時間、日期與時間欄位值的處理方式
此處將輸入在欄位中的日期的值轉換為UNIX時間起至今的經過天數並進行計算。使用UNIX時間起至今的經過天數的值除以一週天數「7」,並基於餘數計算星期幾的概念,根據日期的值顯示星期幾。
- 概念範例
-
輸入2021年4月1日時
從1970年1月1日(週四)起,經過了18718天。
18718除以7後,商數為2674、餘數為0。
表示2021年4月1日是從1970年1月1日(週四)起,剛好經過了2674週。是週四的0天後,因此是週四。
換句話說,輸入日期的經過天數除以7後餘數為0時,該日期為週四。 -
輸入2021年4月2日時
從1970年1月1日(週四)起,經過了18719天。
18719除以7後,商數為2674、餘數為1。
表示2021年4月2日是從1970年1月1日(週四)起,經過了2674週又1天。是週四的1天後,因此是週五。
換句話說,輸入日期的經過天數除以7後餘數為1時,該日期為週五。
-
由上述範例可知,輸入日期的UNIX時間起至今的經過天數除以7的餘數與星期幾的關係如下:
A)經過天數除以7餘數為0時:週四
B)經過天數除以7餘數為1時:週五
C)經過天數除以7餘數為2時:週六
D)經過天數除以7餘數為3時:週日
E)經過天數除以7餘數為4時:週一
F)經過天數除以7餘數為5時:週二
G)經過天數除以7餘數為6時:週三
但kintone的計算功能無法算出餘數。
因此此方法是從經過天數減掉餘數,再計算可被「7」整除的值來確定星期幾,而非直接從餘數確定星期幾。
若要計算可被「7」整除的值,無法被計算公式整除時,可讓計算結果包含小數,或以將小數點以下無條件進位的ROUNDUP函數進行轉換。
將「(經過天數-X)除以7的值」與「將(經過天數-X)除以7的值再以將小數點以下無條件進位的ROUNDUP函數進行轉換後的結果」相減後的值若為0,則判斷為可整除,也就是餘數為「0」,從以下的「A)」~「G)」當中確定相對應的星期幾。
A)經過天數-0的值除以7餘數為0時:週四
B)經過天數-1的值除以7餘數為0時:週五
C)經過天數-2的值除以7餘數為0時:週六
D)經過天數-3的值除以7餘數為0時:週日
E)經過天數-4的值除以7餘數為0時:週一
F)經過天數-5的值除以7餘數為0時:週二
G)經過天數-6的值除以7餘數為0時:週三
關於ROUNDUP函數,請參閱以下頁面。
[ROUND函數、ROUNDUP函數、ROUNDDOWN函數]四捨五入、無條件進位、無條件捨去