1달이상 근무 조건은 어떻게 만들어줘야할까요..?

어디에 질문을 해야할지 몰라 이 게시판에 질문 합니다…

아래 그림의 빨간색 테두리 안에 있는 내용을 조건문으로 만들고 싶습니다.

질문이다

제가 생각해본건, 아래와 같은 코드인데요,., 이런식으로 하는게 맞을까요?

근로 시작일로부터 1달째 되는 날보다 현재 날짜가 크면 1달이상 근무…

DateTime oneMonthLater = startDate.AddMonths(1);

if (DateTime.Today >= oneMonthLater)

1개의 좋아요

간단하게 생각하면 그것도 맞다고도 할 수 있지않을까요?

근데 이제 좀 빡빡하게 조건 따지게 들어가고
(특히 돈 걸린 문제라면 법률쪽도 기웃거리게 되죠.)

예를 들어서 1달의 정의 같은걸 볼까요?
통상 30일로 정할 수도 있지만, ‘돌아오는 같은 날’ 일 경우
2,3,4월 모두 다르죠?

얘네들도 보면
헷갈릴 수 있는 단어의 정의 내리기 → 그걸 기반으로 조건 맞춰 실행하기의 순서라서
구조가 꽤 익숙하실 겁니다.

요번엔 단순 문장을 코드로 번역한다라고 하기보다는 저도 놓칠 수 있는 숨은 케이스 찾아보는게 중점이겠네요!

보통 저렇게 code에 condition을 달지 않고 db에 startdate 와 더불어 enddate를 놓고 처리하죠

답변 감사합니다! 국민연금 가입 여부 조건을 만들어보고 있는데 엄청 어려운 것 같지는 않은데, 정리된 내용을 코드로 만들려고 하니 어렵네요 헿…

넵 ! 현재는 콘솔로 연습해보고 있어서요…

아마 핵심 로직 구현에 지금 많은 시간을 쓰고 계시겠지만, 미리 고민하셔야 할 또 다른 부분을 짚어드리면, 회사 내 실제 "업무일"을 기반으로 근로일을 산정하셔야 할 것 같습니다.

국가에서 정한 공휴일이 대개는 일반 사기업에도 휴일로 작동하는 경우가 많겠지만, 아닌 경우도 있을 수 있고, 개개인의 맥락이 들어가게 되면 주말이나 휴일 근무를 날짜 계산에 넣거나, 국가에서 정하지 않은 기업 자체 공식 휴일을 계산에 넣는 등 날짜 계산이 쉽지 않을 겁니다.

그래서 단순히 시스템 날짜 API 만으로 계산하는 것은 정확하지 않을 수 있어서, 날짜를 처리하는 다른 로직을 구현하시는 것이 더 좋을 수 있다고 생각합니다.

1개의 좋아요

조언 너무 감사합니다!!!

시스템 날짜 API 라고 말씀해주신 것은 예를 들어, startDate.AddMonths(1); 이것 처럼 날짜에 값을 더하거나 빼는 코드를 말하는건가요!?

1개의 좋아요

넵. 정확히는 System.DateTime, System.DateTimeOffset처럼 OS에서 날짜 정보를 받아오는 계통의 모든 날짜 연산 관련 API를 말합니다.

제가 말한 부분이 제대로 고려가 되려면, 시스템 날짜 계산이 기준점이 아니고, 인사 관련 데이터베이스가 원천이 되어야 합니다. (예: 근태 기록을 저장한 근무 기록부 등)

1개의 좋아요

아하!! 넵! 답변 감사합니다!!! ( 여담이지만 성씨가 같아서 더 기분이 좋네요 헿,.)

2개의 좋아요