Nếu tôi có một ngày đi vào một chức năng, làm thế nào tôi có thể biết ngày đó có phải là ngày cuối tuần hay không?
Nếu tôi có một ngày đi vào một chức năng, làm thế nào tôi có thể biết ngày đó có phải là ngày cuối tuần hay không?
Câu trả lời:
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
d
! = day
:) thà gọi như dayOfWeek
vậy thì OP sẽ hợp lý hơn.
getDay
phải luôn trả về 0 cho chủ nhật và 6 cho thứ bảy, v.v., theo cài đặt múi giờ hiện tại. (Và sau đó OP sẽ quyết định điều gì tạo thành "cuối tuần" theo yêu cầu của họ.)
===
thay vì ==
so sánh các giá trị tuyệt đối. Không quan trọng, nhưng chỉ là thực hành tốt nhất.
var isWeekend = yourDateObject.getDay()%6==0;
.getDay()
sẽ dẫn đến một giá trị khác hoặc nếu định nghĩa của isWeekend
sẽ sai. Nếu nó là về biến, tôi không quan tâm. Tôi đoán số 0 sẽ luôn là chủ nhật, vì vậy nó tốt cho tôi.
Ngắn và ngọt.
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
Tôi đã thử câu trả lời Đúng và nó hoạt động với một số ngôn ngữ nhất định nhưng không phải cho tất cả:
Trong tài liệu momentjs: ngày trong tuần Số được trả về phụ thuộc vào miền địa phương ban đầuWeekDay, vì vậy thứ Hai = 0 | Chủ nhật = 6
Vì vậy, tôi thay đổi logic để kiểm tra DayString thực tế ('Chủ nhật')
const weekday = momentObject.format('dddd'); // Monday ... Sunday
const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
Bằng cách này, bạn độc lập với ngôn ngữ địa phương.
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).
Cập nhật năm 2020
Hiện nay có nhiều cách để đạt được điều này.
1) Sử dụng day
phương pháp để lấy các ngày từ 0-6:
const day = yourDateObject.day();
// or const day = yourDateObject.get('day');
const isWeekend = (day === 6 || day === 0); // 6 = Saturday, 0 = Sunday
2) Sử dụng isoWeekday
phương pháp lấy các ngày từ 1-7:
const day = yourDateObject.isoWeekday();
// or const day = yourDateObject.get('isoWeekday');
const isWeekend = (day === 6 || day === 7); // 6 = Saturday, 7 = Sunday
.isoWeekday()
là một phương thức moment.js, nhưng không được chỉ định.
Tôi đã kiểm tra hầu hết các câu trả lời ở đây và luôn có một số vấn đề với Múi giờ, Ngôn ngữ hoặc thời điểm bắt đầu của tuần là Chủ nhật hoặc Thứ hai.
Dưới đây là một mà tôi tìm thấy là an toàn hơn, vì nó dựa trên tên của các ngày trong tuần và trên en locale.
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;
Trong phiên bản hiện tại, bạn nên sử dụng
var day = yourDateObject.day();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
Sử dụng phương thức .getDay () trên đối tượng Date để lấy ngày.
Kiểm tra xem đó là 6 (thứ bảy) hay 0 (chủ nhật)
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);
Sau đây xuất ra một boolean cho dù một đối tượng ngày tháng có trong giờ « mở cửa », không bao gồm ngày cuối tuần và không bao gồm giờ hàng đêm giữa 23H00
và 9H00
, trong khi có tính đến chênh lệch múi giờ của khách hàng.
Tất nhiên điều này không xử lý các trường hợp đặc biệt như ngày lễ, nhưng không xa;)
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?
Ngoài ra, để lấy ngày trong tuần dưới dạng chuỗi địa phương Người , chúng ta có thể sử dụng:
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)
)
Lưu ý new Intl.DateTimeFormat
là vòng lặp bên trong chậm, một mảng kết hợp đơn giản chạy nhanh hơn:
console.log(
["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()]
)
Chỉ cần thêm 1 trước modulo
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;