# 조건 :
1. 기간 있음.
StartDate : 2022.04.10. EndDate : 2022.04.25.
MySQL : tmStartDate = UNIX_TIMESTAMP(startDate) tmEndDate = UNIX_TIMESTAMP(endDate)
2. 초기화로 정해진 주차가 있음.
EX) 월요일 (0:월 ~ 6:일)
3. 초기화로 정해진 시간이 있음.
EX) 10 (0~23)
4. 상수.
TIME_MINUTE = 60
TIME_HOUR = TIME_MINUTE * 60
TIME_DAY = TIME_HOUR * 24 // 86400
TIME_WEEK = TIME_DAY * 7
5. 그 외.
1주는 7일
하루는 86400 (초)
요일은 0:월 ~ 6:일
시간은 0 ~ 23
UNIX_TIMESTAMP -> 1970.01.01 이후 값. 초로 계산된 시간.
2022.04.10. Hour(9) -> 1649548800
# 알고리즘 :
// [ 허수 Day 계산 ]
// 정해진 주차(/7) 계산으로 초기화 하기 위해. 시작 주차 차/가산 허수Day 계산.
( StartDate_요일 < 초기화_요일 ) 이라면,
허수Day_초 = 86400 * ( 7 - (초기화_요일 - StartDate_요일) )
( StartDate_요일 > 초기화_요일 ) 이라면,
허수Day_초 = 86400 * ( 7 - (StartDate_요일 - 초기화_요일) )
// [ 초기화 주차 계산 ]
// EX) StartDate 요일이 일요일. 초기화 월요일 라면,
// -> 주차 계산(/7) 위해 : 일요일 -6 Day(허수) = 월요일로 설정.
MadeStartDate_초 = StartDate_초 - 허수Day_초
// [ 초기화 시간 체크 ]
// 초기화 시간에 도달 하지 않았다면 주차 계산(/7) 초기화 안되도록 +1 Day(허수) 가산.
(현재_요일 == 초기화_요일) 이고,
(현재_시간 < 초기화_시간) 이라면,
MadeStartDate_초 = MadeStartDate_초 + 86400
// [ 남아있는 Day 계산 ]
남은Day_초 = 현재_일_초 - MadeStartDate_초
남은Day = 남은Day_초 / TIME_DAY
// [ 주차 계산 ]
진행_주차 = ( 남은Day / 7 ) + 1
'[ Programing ] > Algorithm' 카테고리의 다른 글
[C++] FSM Sample Code (0) | 2023.06.21 |
---|---|
[C++] mt19937 난수 생성기 (Random 클래스) (0) | 2019.11.21 |
비트(bit)값 연산 정리. (0) | 2018.03.08 |
Tip 클래스 객체 생성과 초기 선언을 한줄로... (0) | 2016.07.25 |
설정된 기간 관련 카운터(주간) 계산하기 (0) | 2014.01.10 |