<aside> ❗ 주의: 주말만 걸러내고, 추석, 설날 등의 공휴일은 해당되지 않습니다.
</aside>
<aside> ❗ 속성의 이름은 가급적 그대로 써주시되, 수식이 적용된 이후에는 바꾸셔도 상관없습니다.
</aside>
<aside> <img src="/icons/stars_blue.svg" alt="/icons/stars_blue.svg" width="40px" /> 시작일 기준 Workday 함수 구현 방법
사용되는 속성 종류는 이렇습니다.
Start: 시작일. 날짜 속성.
days: 근무 일수. 숫자 속성
End Date: 근무 일수를 계산한 마지막 근무일자. 수식 속성을 만들어 하단의 함수를 복사/붙여넣기 하세요.
lets(
시작일, prop("Start"), /* 시작 날짜 */
시작요일, toNumber(시작일.formatDate("d")), /* `시작일`의 요일, 숫자 형식으로 변환 */
days, prop("days")-1, /* 총 일수에서 하루를 뺀 값 */
/* `시작요일`이 주말일 때, 추가 일수 */
추가일수, if(시작요일 == 0, 1, 시작요일 == 6 ? 2 : 0),
/* 주어진 `days`가 5일 이상인 경우, 주말 일수 계산*/
주말일수,
ifs(
days>=5 and 시작요일+days>5, floor(days/5)*2+2,
prop("days")>=5, floor(days/5)*2,
days<5 and 시작요일+days>5, 2,
0
),
/* `시작일`에 `주말일수`와 `추가일수`를 포함한 총 일수를 더한 날짜 */
확인날짜, 시작일.dateAdd(days + 주말일수 + 추가일수, "days"),
/* `확인날짜`의 요일. 숫자 형식으로 반환*/
확인요일, toNumber(확인날짜.formatDate("d")),
/*확인 날짜가 주말인지 확인하고 조정*/
if(
not empty(prop("days")),
/* `확인날짜`가 주말인 경우, 2일 추가하고, 평일이면 유지*/
if(
확인요일 == 6 || 확인요일 == 0,
확인날짜.dateAdd(2,"days"),
확인날짜
),
"day를 입력해주세요."
)
)
</aside>
<aside> <img src="/icons/stars_blue.svg" alt="/icons/stars_blue.svg" width="40px" /> 시작일 기준 Workday 함수 구현 방법 + 내가 원하는 날짜 제외하기
위와 같지만 거기에서 우리가 원하는 날짜도 workday에서 제외를 시키려면
조건에 원하는 날짜가 들어가야겠죠.
lets(
시작일, prop("Start"), /* 시작 날짜 */
시작요일, 시작일.day(), /* `시작일`의 요일 */
days, prop("days")-1, /* 총 일수에서 하루를 뺀 값 */
빼고싶은날, [ /* parseDate("YYYY-MM-DD") 형식으로 날짜들을 입력해주세요.*/
parseDate("2024-07-19"),
parseDate("2024-07-23")
],
/* `시작요일`이 주말 or 시작일이 빼고 싶은 날을 포함할 때, 추가 일수 */
추가일수, if(시작요일 == 7 || 빼고싶은날.includes(시작일), 1, 시작요일 == 6 ? 2 : 0),
/* 주어진 `days`가 5일 이상인 경우, 주말 일수 계산*/
주말일수,
ifs(
days>=5 and 시작요일+days>5, floor(days/5)*2+2,
prop("days")>=5, floor(days/5)*2,
days<5 and 시작요일+days>5, 2,
0
),
/* `시작일`에 `주말일수`와 `추가일수`를 포함한 총 일수를 더한 날짜 */
확인날짜, 시작일.dateAdd(days + 주말일수 + 추가일수, "days"),
/* 빼고 싶은 날 중, 시작일과 확인 날짜 안에 포함되는 일수 계산 */
빼는일수,
빼고싶은날.filter(
and(current.day() != 6 || current.day() != 7, current>=시작일, current<=확인날짜)
).length()-(if(빼고싶은날.includes(시작일),1,0)),
/* 최종 날짜 */
최종날짜, 확인날짜.dateAdd(빼는일수,"days"),
/* `확인날짜`의 요일. 숫자 형식으로 반환*/
확인요일, toNumber(최종날짜.formatDate("d")),
/*확인 날짜가 주말인지 확인하고 조정*/
if(
not empty(prop("days")),
/* `확인날짜`가 주말인 경우, 2일 추가하고, 평일이면 유지*/
if(
확인요일 == 6 || 확인요일 == 7,
최종날짜.dateAdd(2,"days"),
최종날짜
),
"day를 입력해주세요."
)
)
</aside>
<aside> <img src="/icons/stars_blue.svg" alt="/icons/stars_blue.svg" width="40px" /> 시작일-종료일 사이 Workday 일수 구하기
사용되는 속성 종류는 이렇습니다.
Start: 시작일. 날짜 속성
End: 종료일. 날짜 속성
Workdays: 계산된 근무일수. 수식 속성을 만들어 아래 함수를 복사/붙여넣기 하시면 됩니다.
prop("Start") < prop("End")
?
ceil(
dateBetween(
prop("End"), prop("Start"), "hours"
) / 24
) - (
floor(
ceil(
dateBetween(
prop("End"), prop("Start"), "hours"
) / 24
)/ 7
) * 2
) - (
toNumber(
formatDate(prop("Start"), "d")
)
-
toNumber(
formatDate(prop("End"), "d")
) >= 1
?
2 : 0
) - (
(
toNumber(
formatDate(prop("Start"), "d")
) == 0 &&
toNumber(
formatDate(prop("End"), "d")
) != 6
) || (
toNumber(
formatDate(prop("End"), "d")
) == 6 &&
toNumber(
formatDate(prop("Start"), "d")
) != 0
)
?
1 : 0
) - (
toNumber(formatDate(prop("Start"), "d"))
-
toNumber(formatDate(prop("End"), "d")) == -6
?
2 : 0
)
+ 1
: toNumber("")
</aside>
사용하면서 잘 모르겠는 부분이 있다면 언제든 질문이나 문의주세요😊
<aside> 🦔 노킹 :: 뉴스레터 | 판매 템플릿 | 노션 질문 오픈카톡방 | 링크드인 | 후원
</aside>
Copyright 2024. 노킹 all rights reserved