यह निर्धारित करने के लिए कि तिथि को सप्ताहांत में कैसे तय किया जाए [बंद]


81

अगर मेरे पास एक समारोह में आने की तारीख है, तो मैं इसे सप्ताहांत का दिन कैसे बता सकता हूं?


ध्यान दें कि कुछ देशों में सप्ताहांत के रूप में शुक्रवार और शनिवार होते हैं (जैसा कि मैंने उत्तर में उल्लेख किया है) इसलिए एक उत्तर को देश के सप्ताहांत पर विचार करना चाहिए। enikw.org.org/wiki/Workweek_and_weekend
लड़के

जवाबों:


164
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0);    // 6 = Saturday, 0 = Sunday

9
d! = day:) मैं इसके बजाय इसे कॉल dayOfWeekकरूंगा, यह ओपी के लिए अधिक समझदार होगा।
बालुसक

4
यह सभी टाइमज़ोन के लिए सही नहीं है। उदाहरण के लिए, फ्रांस में, सप्ताह का पहला दिन सोमवार होगा, रविवार नहीं। मोमेंट जैसे आधुनिक समय के पुस्तकालय इसकी भरपाई करते हैं।
सिसवन

7
@ इस्वन: getDayवर्तमान समय की सेटिंग्स के अनुसार हमेशा रविवार के लिए 0 और शनिवार आदि के लिए 6 वापस करना चाहिए। (और फिर यह ओपी पर निर्भर है कि वे अपनी आवश्यकताओं के अनुसार "सप्ताहांत" का फैसला करें।)
ल्यूक

1
Js के लिए, यह संभवतः बेहतर है यदि आप पूर्ण मूल्यों की तुलना करने के ===बजाय ==करते हैं। महत्वपूर्ण नहीं है, लेकिन सिर्फ सबसे अच्छा अभ्यास।
dylanh724

1
देखें ecma-international.org/ecma-262/6.0/#sec-week-day । 0 हमेशा रविवार के बराबर होता है
ट्रीएंडएलएफ

49
var isWeekend = yourDateObject.getDay()%6==0;

यह सच है अगर यह शनिवार है
Gianfranco पी।

13
0% 6 (रविवार) और 6% 6 (शनिवार) दोनों में एक 0 मापांक है
kennebec

8
स्वैच्छिक भ्रामक होने के अलावा, मुझे इस तकनीक का कोई मतलब नहीं दिखता। मैं व्यक्तिगत रूप से ल्यूक के जवाब को पसंद करता हूं। यह केवल मौका है कि इस मामले में हम अपनी समस्या को हल करने के लिए 7 के बजाय 6 के मोडुलो का उपयोग कर सकते हैं।
हेनरी लैपिएरे

कुछ देशों में सप्ताहांत के रूप में शुक्रवार और शनिवार है
लड़के

@Guy तो सवाल यह है कि अगर .getDay()दूसरे मूल्य में परिणाम होगा या अगर की परिभाषा isWeekendगलत होगी। यदि इसके चर के बारे में, मुझे परवाह नहीं है। मुझे लगता है कि एक 0 हमेशा रविवार होगा, इसलिए मेरे लिए यह ठीक है।
C4d

10

छोटा एवं सुन्दर।

var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);


5

मैंने सही उत्तर देने की कोशिश की और इसने कुछ स्थानों के लिए काम किया लेकिन सभी के लिए नहीं:

क्षणों में डॉक्स: कार्यदिवस लौटाया गया अंक स्थानीय प्रारंभिक वीकडे पर निर्भर करता है, इसलिए सोमवार = 0 | रविवार = 6

इसलिए मैं वास्तविक DayString ('रविवार') की जाँच करने के लिए तर्क को बदलता हूँ

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).
T04435

1

अद्यतन 2020

अब इसे प्राप्त करने के कई तरीके हैं।

1) day0-6 से दिन प्राप्त करने की विधि का उपयोग करना :

const day = yourDateObject.day();
// or const day = yourDateObject.get('day');
const isWeekend = (day === 6 || day === 0);    // 6 = Saturday, 0 = Sunday

2) isoWeekday1-7 से दिन प्राप्त करने की विधि का उपयोग करना :

const day = yourDateObject.isoWeekday();
// or const day = yourDateObject.get('isoWeekday');
const isWeekend = (day === 6 || day === 7);    // 6 = Saturday, 7 = Sunday

.isoWeekday()एक क्षण है। जेएस विधि, लेकिन निर्दिष्ट नहीं।
एनवीआरएम


0

मैंने यहां अधिकांश उत्तरों का परीक्षण किया है और टाइमज़ोन, लोकेल के साथ हमेशा कुछ समस्या होती है, या सप्ताह की शुरुआत रविवार या सोमवार को होती है।

नीचे एक है जो मुझे लगता है कि अधिक सुरक्षित है, क्योंकि यह कार्यदिवस के नाम और एन लोकेल पर निर्भर करता है ।

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;

0

वर्तमान संस्करण में, आपको उपयोग करना चाहिए

    var day = yourDateObject.day();
    var isWeekend = (day === 6) || (day === 0);    // 6 = Saturday, 0 = Sunday

0

दिन प्राप्त करने के लिए दिनांक ऑब्जेक्ट पर .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);

एसओ में आपका स्वागत है। कृपया अपने उत्तर को स्वरूपित करते समय अधिक ध्यान रखें। सामान्य पाठ को कोड ब्लॉक में नहीं जाना चाहिए।
कलनसुविज़

-1

निम्नलिखित एक बूलियन को आउटपुट करता है कि क्या कोई दिनांक ऑब्जेक्ट « खुलने » घंटे के दौरान है , सप्ताहांत के दिनों को छोड़कर, और ग्राहक के समय क्षेत्र ऑफसेट को ध्यान में रखते हुए, रात के बीच 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()]
)


-3

बस modulo से पहले 1 जोड़ें

var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;

5
यह तभी काम करता है जब आप संडे को पूरा वीकेंड मानते हैं।
सभी कार्यकर्ता आवश्यक हैं

@cpburnz अधिकांश देश करते हैं। सप्ताह की शुरुआत रविवार से ही करें।
बोकेवी

2
@bokkie फिर यह एक महत्वपूर्ण जानकारी है जिसे आपके उत्तर में जोड़ा जाना चाहिए।
सभी कार्यकर्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.