함수에 날짜가있는 경우 주말인지 어떻게 알 수 있습니까?
답변:
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
d
! = day
:) 차라리 그것을 부르고 싶습니다 dayOfWeek
. OP에 더 합리적입니다.
getDay
현재 시간대 설정에 따라 항상 일요일에는 0을, 토요일에는 6을 반환해야합니다. (그리고 그들의 요구 사항에 따라 "주말"을 구성하는 것을 결정하는 것은 OP에 달려 있습니다.)
===
의 ==
경우 절대 값을 비교할 때 대신 수행 하는 것이 더 좋습니다 . 중요하지는 않지만 모범 사례입니다.
var isWeekend = yourDateObject.getDay()%6==0;
.getDay()
다른 값을 가져올 지 또는 정의 isWeekend
가 잘못되었는지입니다. 변수에 관한 것이라면 상관하지 않습니다. 0은 항상 일요일이 될 것 같아서 괜찮습니다.
짧고 달다.
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
나는 정답을 시도했고 특정 로케일에서는 작동했지만 모두는 아닙니다.
momentjs 문서에서 : weekday 반환되는 숫자는 로케일 initialWeekDay에 따라 다르므로 Monday = 0 | 일요일 = 6
그래서 실제 DayString ( 'Sunday')을 확인하기 위해 논리를 변경합니다.
const weekday = momentObject.format('dddd'); // Monday ... Sunday
const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
이렇게하면 로케일에 독립적입니다.
Some countries have adopted a one-day weekend, i.e. either Sunday only (in seven countries), Friday only (in Djibouti, Iran, Palestine and Somalia), or Saturday only (in Nepal).
2020 업데이트
이를 달성하는 방법에는 여러 가지가 있습니다.
1) day
방법을 사용하여 0-6에서 날짜를 가져옵니다.
const day = yourDateObject.day();
// or const day = yourDateObject.get('day');
const isWeekend = (day === 6 || day === 0); // 6 = Saturday, 0 = Sunday
2) isoWeekday
방법을 사용하여 1-7에서 날짜를 가져옵니다.
const day = yourDateObject.isoWeekday();
// or const day = yourDateObject.get('isoWeekday');
const isWeekend = (day === 6 || day === 7); // 6 = Saturday, 7 = Sunday
.isoWeekday()
moment.js 메소드이지만 지정되지 않았습니다.
여기에서 대부분의 답변을 테스트했으며 시간대, 로케일 또는 주 시작이 일요일 또는 월요일 일 때 항상 몇 가지 문제가 있습니다.
아래는 평일 이름 과 en 로케일 에 의존하기 때문에 더 안전하다고 생각하는 것 입니다.
let startDate = start.clone(),
endDate = end.clone();
let days = 0;
do {
const weekday = startDate.locale('en').format('dddd'); // Monday ... Sunday
if (weekday !== 'Sunday' && weekday !== 'Saturday') days++;
} while (startDate.add(1, 'days').diff(endDate) <= 0);
return days;
Date 객체에서 .getDay () 메서드를 사용하여 요일을 가져옵니다.
6 (토요일) 또는 0 (일요일)인지 확인
var givenDate = new Date('2020-07-11');
var day = givenDate.getDay();
var isWeekend = (day === 6) || (day === 0) ? 'It's weekend': 'It's working day';
console.log(isWeekend);
다음 은 클라이언트 시간대 오프셋을 고려하면서 날짜 개체가 주말을 제외하고 와 사이의 야간 시간을 제외하고 « 영업 »시간 동안인지 여부를 부울 출력합니다 .23H00
9H00
물론 이것은 휴일과 같은 특별한 경우를 처리하지 않지만 멀지 않습니다.)
let t = new Date(Date.now()) // Example Date object
let zoneshift = t.getTimezoneOffset() / 60
let isopen = ([0,6].indexOf(t.getUTCDay()) === -1) && (23 + zoneshift < t.getUTCHours() === t.getUTCHours() < 9 + zoneshift)
// Are we open?
console.log(isopen)
<b>We are open all days between 9am and 11pm.<br>
Closing the weekend.</b><br><hr>
Are we open now?
또는 요일을 로케일 휴먼 문자열 로 가져 오려면 다음 을 사용할 수 있습니다.
let t = new Date(Date.now()) // Example Date object
console.log(
new Intl.DateTimeFormat('en-US', { weekday: 'long'}).format(t) ,
new Intl.DateTimeFormat('fr-FR', { weekday: 'long'}).format(t) ,
new Intl.DateTimeFormat('ru-RU', { weekday: 'long'}).format(t)
)
new Intl.DateTimeFormat
루프 내부에서 느리다는 점에 유의하십시오 . 간단한 연관 배열이 훨씬 빠르게 실행됩니다.
console.log(
["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()]
)
모듈로 앞에 1을 추가하기 만하면됩니다.
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;