जेएस में दिनांक से दिन का नाम


82

मुझे दिन की तारीख (जैसे "05/23/2014") को प्रदर्शित करने की आवश्यकता है जो मुझे 3 जी पार्टी से मिलती है।

मैंने उपयोग करने की कोशिश की है Date, लेकिन मुझे केवल तारीख मिलती है।

दिन का नाम प्राप्त करने का सही तरीका क्या है?


इसे किसी दिनांक में रूपांतरित करें, फिर getDay()दिन संख्या (0-6, 0 == रविवार) प्राप्त करने के लिए कॉल करें , और फिर दिन के नाम की एक संख्या का उपयोग करके नंबर को नाम पर रखें।
माफ करना

जवाबों:


122

आप Date.getDay()विधि का उपयोग कर सकते हैं , जो रविवार के लिए 0, शनिवार के लिए 6 तक रिटर्न करता है। तो, आप दिन के नाम के लिए नाम के साथ एक सरणी बना सकते हैं:

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(dateString);
var dayName = days[d.getDay()];

यहां dateStringआपको तीसरे पक्ष एपीआई से प्राप्त स्ट्रिंग है।

वैकल्पिक रूप से, यदि आप दिन के नाम के पहले 3 अक्षर चाहते हैं, तो आप Dateऑब्जेक्ट की अंतर्निहित toStringविधि का उपयोग कर सकते हैं :

var d = new Date(dateString);
var dayName = d.toString().split(' ')[0];

यह d.toString()आउटपुट में पहला शब्द लेगा, जो 3-अक्षर वाले दिन का नाम होगा।


14
यह शायद यह करने का सबसे अच्छा तरीका नहीं है। मानक जावास्क्रिप्ट तिथि वर्ग पूरा नाम प्राप्त करने के तरीके प्रदान करता है। मेरे जवाब पर एक नजर।
RWC

लेकिन ... "मानक जावास्क्रिप्ट तिथि वर्ग" सभी ब्राउज़रों में काम नहीं करता है।
हरनैन एचे

डेवलपर के अनुसार @ HernánEche डेवलपर. mozilla.org/en-US/docs/Web/JavaScript/Reference/… हर एक ब्राउज़र डेट को बस ठीक-ठाक सपोर्ट करता है। कौन सा ब्राउज़र आपके लिए काम नहीं करता है?
Joeytje50

JavaFx से @ Joeytje50 WebView, लेकिन ठीक है, 'ब्राउज़र' के रूप में योग्य नहीं है
हर्नान ईचे

@ HernánEche JavaFx, जहां तक ​​मैं इंटरनेट पर पा सकता हूं, जावा है, जावास्क्रिप्ट नहीं। ये भाषाएं पूरी तरह से अलग हैं, इसलिए आपको जावा से संबंधित चीजों की तलाश करनी चाहिए। उस बारे में अधिक जानकारी के लिए thesoftwareguild.com/faq/difference-between-java-and-javascript (या "जावा और जावास्क्रिप्ट के बीच अंतर") के तहत Google पर कोई अन्य परिणाम देखें ।
Joeytje50

173

अहुम, तीन साल बाद ...

कोई भी मानक जावास्क्रिप्ट तिथि वर्ग (कैलम लिनिंगटन को छोड़कर) द्वारा प्रदान की गई विधियों का उपयोग क्यों नहीं करता है?

Https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString देखें

दिनांक से दिन का नाम प्राप्त करना :

function getDayName(dateStr, locale)
{
    var date = new Date(dateStr);
    return date.toLocaleDateString(locale, { weekday: 'long' });        
}

var dateStr = '05/23/2014';
var day = getDayName(dateStr, "nl-NL"); // Gives back 'Vrijdag' which is Dutch for Friday.

एक सरणी में सभी कार्यदिवस प्राप्त करना:

function getWeekDays(locale)
{
    var baseDate = new Date(Date.UTC(2017, 0, 2)); // just a Monday
    var weekDays = [];
    for(i = 0; i < 7; i++)
    {       
        weekDays.push(baseDate.toLocaleDateString(locale, { weekday: 'long' }));
        baseDate.setDate(baseDate.getDate() + 1);       
    }
    return weekDays;
}

var weekDays = getWeekDays('nl-NL'); // Gives back { 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'} which are the days of the week in Dutch.

अमेरिकी तारीखों के लिए 'en-US' को लोकेल के रूप में उपयोग करें।


2
मुझे अपने समाधान पोस्ट करने के समय इस पद्धति के बारे में जानकारी नहीं थी। बहुत अच्छा समाधान वास्तव में। यह भी अच्छा है कि यह सीधे अंतर्राष्ट्रीयकरण प्रदान करता है। इसके अलावा, कुछ नया सीखना अच्छा है: P
Joeytje50

1
एक संभावित कारण कुछ लोग इसका उपयोग नहीं कर सकते हैं, क्योंकि आप जिस पृष्ठ से जुड़े हैं, उसके अनुसार ऐसा लगता है कि मोबाइल प्लेटफार्मों पर स्थानों के साथ पूर्ण संगतता नहीं है।
जॉन

@ जॉन जून: सच। वर्तमान में, मोबाइल उपकरणों पर अधिकांश ब्राउज़र इसका समर्थन करते हैं। सबसे उल्लेखनीय, डिफ़ॉल्ट Android ब्राउज़र नहीं है। Android पर क्रोम करता है। (वैसे भी Android पर Chrome का उपयोग करने की सलाह दी जाती है .. विभिन्न चर्चा।)
RWC

केवल IE10 में आंशिक रूप से काम करता है। कार्यदिवस को मान्यता दी गई है, लेकिन हमेशा लंबे नाम को लौटाता है, भले ही मैं 'लघु' निर्दिष्ट करता हूं। 'शॉर्ट' क्रोम में काम करता है। इसके अलावा IE10 'महीने' कीवर्ड को नहीं पहचानता है। यह सिर्फ एक तारीख देता है, जैसे 'थू जन 1 1970' जब 'लंबे' के साथ प्रयोग किया जाता है, जबकि क्रोम लंबे महीने के नाम वापस करता है।
लारोफाइड

हम्म, मुझे लगता है कि rephrase। कुछ और अधिक कठिन होने के बाद, IE10 आपके द्वारा निर्दिष्ट किसी भी चीज़ से परेशान नहीं होता है, यहां तक ​​कि लोकेल भी नहीं। यह हमेशा ओएस लोकेल के अनुसार लंबे नामों के साथ एक पूर्ण तिथि देता है।
लारोफाइड


17

Date.toLocaleString () विधि का उपयोग करें:

new Date(dateString).toLocaleString('en-us', {weekday:'long'})

9
var days = [
    "Sunday",
    "Monday",
    "...", //etc
    "Saturday"
];

console.log(days[new Date().getDay()]);

सरल, जावास्क्रिप्ट मैनुअल में दिनांक ऑब्जेक्ट पढ़ें

तिथि के साथ अन्य काम करने के लिए, जैसे कि इससे एक पठनीय स्ट्रिंग मिलता है, मैं उपयोग करता हूं:

var d = new Date();
d.toLocaleString();

यदि आप केवल समय या दिनांक का उपयोग करना चाहते हैं:

d.toLocaleTimeString();
d.toLocaleDateString();

आप या तो दिनांक को पार्स कर सकते हैं:

var d = new Date(dateToParse);

या

var d = Date.parse(dateToParse);

दिन [Date.now ()। getDay () गलत है क्योंकि Date.now () एक नंबर देता है, डेट नहीं।
tronman

यह होना चाहिएdays[new Date().getDay()]
कैलोम लिन्गिंगटन

3

इस पर एक नजर डालिए :

var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };

console.log(event.toLocaleDateString('de-DE', options));
// expected output: Donnerstag, 20. Dezember 2012

console.log(event.toLocaleDateString('ar-EG', options));
// expected output: الخميس، ٢٠ ديسمبر، ٢٠١٢

console.log(event.toLocaleDateString('ko-KR', options));
// expected output: 2012년 12월 20일 목요일

स्रोत: मोज़िला डॉक्टर



2

मैं किसी और जटिल समाधान का प्रशंसक नहीं हूं, अगर कोई और कुछ बेहतर करता है, तो कृपया हमें बताएं :)

any-name.js

var today = new Date().toLocaleDateString(undefined, {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric',
    weekday: 'long'
});
any-name.html
<script>
    document.write(today);
</script>

1

आप किसी ऑब्जेक्ट का उपयोग कर सकते हैं

var days = {
   'Mon': 'Monday',
   'etc..': 'etc..',
   'Fri': 'Friday'
}

var date = new Date().toString().split(' ')[0]; //get day abreviation first
console.log(days[date]);

1

इस कोड का उपयोग करके देखें:

var event = new Date();
var options = { weekday: 'long' };
console.log(event.toLocaleDateString('en-US', options));

यह आपको स्ट्रिंग प्रारूप में दिन का नाम देगा।


1
ToLocaleString के साथ एक समाधान 2 साल पहले पोस्ट किया गया था, इस उत्तर की आवश्यकता क्यों है?
रॉबग

1

समाधान नंबर 1

var today = new Date();

  var day = today.getDay();

  var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];

  var dayname = days[day];

  document.write(dayname);

समाधान नंबर 2

      var today = new Date();

  var day = today.getDay();

  switch(day){
    case 0:
    day = "Sunday";
    break;

    case 1:
    day = "Monday";
    break;

    case 2:
    day ="Tuesday";
    break;

    case 3:
    day = "Wednesday";
    break;

    case 4:
    day = "Thrusday";
    break;

    case 5:
    day = "Friday";
    break;

    case 6:
    day = "Saturday";
    break;
  }


document.write(day);

1

सबसे छोटा एक लाइनर

यदि आप चाहते हैं कि UTC दिन को 6 से बदल दें तो रविवार से शुरू करें।

const getWeekDays = (locale) => [...Array(7).keys()].map((v)=>new Date(Date.UTC(1970, 0, 6+v)).toLocaleDateString(locale, { weekday: 'long' }));

console.log(getWeekDays('de-DE')); 


1

किसी भी तारीख से दिन को प्राप्त करने के लिए, बस तारीख को एक नई तारीख में पास करें:

let date = new Date("01/05/2020");
let day = date.toLocaleString('en-us', {weekday: 'long'});
console.log(day);
// expected result = tuesday

अधिक पढ़ने के लिए, mdn-date.prototype.toLocaleString () ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Ojectjects/Date/toLocaleString ) पर जाएं


0

बस इसका उपयोग करें:

function getWeekDayNames(format = 'short', locale = 'ru') {
  const names = [];
  const date = new Date('2020-05-24');
  let days = 7;

  while (days !== 0) {
    date.setDate(date.getDate() + 1);
    names.push(date.toLocaleDateString(locale, { weekday: format }));
    days--;
  }

  return names;
}

स्वरूपों के बारे में आप यहाँ पढ़ सकते हैं दस्तावेज़ीकरण DateTimeFormat



-1

सबसे अच्छी विधि नहीं, इसके बजाय एक सरणी का उपयोग करें। यह सिर्फ एक वैकल्पिक तरीका है।

http://www.w3schools.com/jsref/jsref_getday.asp

var date = new Date();
var day = date.getDay();

यहां पोस्ट करने से पहले आपको वास्तव में Google का उपयोग करना चाहिए।

चूंकि अन्य लोगों ने सरणी विधि पोस्ट की है, इसलिए मैं आपको स्विच स्टेटमेंट का उपयोग करके एक वैकल्पिक तरीका दिखाऊंगा।

switch(day) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;

    ... rest of cases

    default:
        // do something
        break;
}

हालांकि, उपरोक्त कार्य बेहतर विकल्प है। तुम भी if()बयानों का उपयोग कर सकते हैं लेकिन एक स्विच स्टेटमेंट बहुत क्लीनर होगा तो कई अगर।


1
यह 0-6 से एक संख्यात्मक मान लौटाएगा - सप्ताह का दिन नहीं।
केसी फॉक

आप इसे वहां से संभाल सकते हैं और इसे एक दिन में बदल सकते हैं।
निकोलस

1
यह सच है। मैं आपको केवल यह बता रहा हूं कि यह ओपी के प्रश्न का लिखित रूप में उत्तर नहीं देता है।
केसी फॉक

switch? आप switchएक साधारण के बजाय क्यों इस्तेमाल करेंगे Array? मेरा मतलब है, मुझे लगता है कि यह अन्य उत्तरों के लिए एक विकल्प है ... लेकिन पवित्र लेखन समय, बैटमैन ...: /
केसी फॉक

क्योंकि 2 अन्य लोगों के समान ही क्यों पोस्ट करें?
निकोलस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.