내 요일 목록입니다
days_list: any[] = [
{
id: 0,
value: 'Monday'
},
{
id: 1,
value: 'Tuesday'
}, {
id: 2,
value: 'Wednesday'
}, {
id: 3,
value: 'Thursday'
}, {
id: 4,
value: 'Friday'
}, {
id: 5,
value: 'Saturday'
},
{
id: 6,
value: 'Sunday'
},
]
내 업무 시간은 다음과 같습니다.
business_hours = { day_to: 2, time_to: "23:00", day_from: 5, time_from: "08:00" }
나는 UTC 날짜 형식을 사용하고 있습니다.
days_list
에 따라 존재
day_from
과
day_to
예를 들어 여기
day_from
토요일은 5이고
day_to
2 수요일이므로 필수 배열은 다음과 같습니다.
["Saturday", "Sunday", "Monday". "Tuesday". "Wednesday"]
현재 시간이있는 경우 시간에 대해서도 동일합니다.
time_from
과
time_to
,
내 코드는 다음과 같습니다.
const activationDate = new Date();
const d_date = activationDate.getUTCDay() - 1;
console.log(d_date);
const B_from = this.getMin(this.business_hours.time_from);
const B_To = this.getMin(this.business_hours.time_to);
const min = activationDate.getUTCMinutes();
console.log(min)
const naan = activationDate.getUTCHours();
console.log(naan)
const utcTime = this.getUtcMin(naan, min);
for(let j = 0; j < this.business_hours.day_to; j++) {
for (let i = this.business_hours.day_from; i < this.days_list.length; i++) {
console.log(this.days_list[i]);
if (this.days_list[i].id === d_date) {
this.is_open = true;
console.log(this.days_list[i].value);
}
}
}
필요한 결과를 제공하지 않습니다.
- 답변 # 1
- 답변 # 2
이와 같은 질문에 답하기 위해 몇 가지 테스트 케이스를 나열하고 예상 값과 실제로보고있는 값을 모두 제공하는 것이 좋습니다.
그러나 코드에서 문제를 일으킬 수있는 몇 가지 사항을 볼 수 있습니다.
계산
d_date
6이 아닌 일요일에 -1을 반환합니다.days_list
기대하고 있습니다)외부 루프 (한 설정
j
)는 여기에 많은 것을 추가하지 않습니다.j
루프 내에서 사용되지 않습니다. 따라서 루프의 각 반복은 동일한 효과를 갖습니다.내부 루프 (1 개 설정
i
)는 다음 날짜 만 검색합니다.day_from
당신의days_list
정렬. 그러나 예를 들어 시작일로부터 며칠days_list
일치하는 경우day_from
값이보다 큼day_to
. - 답변 # 3
Randy Casburn의 (현재 삭제 된) 답변을 기반으로 javascript의 필터 방법을 사용하여이 문제를 해결할 수 있습니다. 그러나 다음과 같은 경우를 대비하여 별도의 케이스를 처리 할 때 특히주의해야합니다.
to_date
이전이다from_date
그 반대.예를 들면 :
const days_list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; function getDays(business_hours) { const days = days_list.filter((_, id) => { if (business_hours.day_from <= business_hours.day_to) { return (id >= business_hours.day_from && id <= business_hours.day_to); } else { return (id <= business_hours.day_to || id >= business_hours.day_from); } }) console.log(business_hours, days); return days; } getDays({ day_from: 2, time_from: "23:00", day_to: 5, time_to: "08:00"}); getDays({ day_to: 2, time_to: "23:00", day_from: 5, time_from: "08:00"}); getDays({ day_from: 3, time_from: "23:00", day_to: 3, time_to: "08:00"});
관련 자료
- rust - 주어진 두 숫자 사이의 모든 소수를 계산하십시오
- sql - Postgres에서 현재 행과 이전 행 사이의 변경 비율을 어떻게 계산할 수 있습니까?
- sql - 앞의 두 행과 현재 행 사이의 행 결과를 이해하는 방법은 무엇입니까?
- tableau - 매월 2 일 사이의 일 수를 구합니다
- c# - cs0103 - 이름 ''이 (가) 현재 컨텍스트에 없습니다
- sql - Oracle에서 '현재 날짜'와 다음 5 일 (미래 날짜) 사이의 레코드 가져 오기
- java - myprocedure 프로 시저 (텍스트, 텍스트)가 존재하지 않습니다 힌트 - 주어진 이름 및 인수 유형과 일치하는 프로 시저가 없습니다
- sql server - 현재 레코드의 종료 시간과 다음 레코드의 시작 시간의 차이가 x 분 미만인 T-SQL의 레코드 통합
- c# - 오류 cs0103 - 현재 컨텍스트에 'x'이름이 없습니다
- rest - ASPNET Core 웹 API "현재 컨텍스트에 이름보기가 없습니다"
- apache spark - 스칼라에서 주어진 두 날짜 사이의 날짜를 얻는 방법
- sql - 주어진 연도와 월 사이의 날짜 범위 찾기
- 현재 컨텍스트 Dotnet core에 '호스트'라는 이름이 없습니다
- c# - 현재 컨텍스트에 'HapticFeedback'이라는 이름이 없습니다XamarinForms
- c# - 현재 컨텍스트에 'array1'및 'getnum'이름이 없습니다
- javascript - 현재 배열의 객체가 이전 배열에 있는지 확인하는 방법
- javascript - 주어진 숫자 사이에 대시 (-)를 삽입하는 방법하지만 짝수 사이에 입력하고 싶습니다
- Windows 10에서 keras-gpu, tensorflow, cudatoolkit 및 cuDNN 간의 현재 버전 호환성은 무엇입니까?
- windows 10 universal - 오류 - 새 클래스의 현재 컨텍스트에 'findname'이라는 이름이 없습니다
내 이해는 어레이를 다음과 같이 취급하고 싶다는 것입니다.회보, 그런 다음 "from"및 "to"인덱스에 따라 슬라이스합니다. 여기서 "from"및 "to"인덱스는 모두 포함으로 처리됩니다.
다음과 같은 문자열 배열이 있다고 가정 해 보겠습니다.
(다음과 같이 구조를 쉽게 바꿀 수 있습니다.
)
그런 다음 다양한 방법으로 포괄적 인 끝점 함수를 사용하여 원형 배열 슬라이스를 작성할 수 있습니다. 다음은 하나입니다.
본질적으로 우리는 배열의 끝에서 벗어나 JS 나머지 연산자에 의해 (거의) 구현 된 모듈 식 산술을 사용하여 처음으로 돌아갑니다.
%
). 작동하는지 살펴 보겠습니다.이것은 당신이 원하는 것입니다. 가장자리 케이스가있을 수 있으니 조심하세요.
코드에 대한 플레이 그라운드 링크