सप्ताह का दिन और वर्ष का महीना कैसे प्राप्त करें?


124

मुझे जावास्क्रिप्ट के बारे में अधिक जानकारी नहीं है, और मुझे जो अन्य प्रश्न मिले हैं, वे तारीखों के संचालन से संबंधित हैं, न केवल जानकारी प्राप्त करना, क्योंकि मुझे इसकी आवश्यकता है।

उद्देश्य

मैं नीचे दिए गए फॉर्मेट की तिथि प्राप्त करना चाहता हूं:

गुरुवार, 27 जनवरी 2011 को 17:42:21 पर मुद्रित

अब तक, मुझे निम्नलिखित मिला:

var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();

h = checkTime(h);
m = checkTime(m);
s = checkTime(s);

var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;

अब मुझे यह जानना होगा कि सप्ताह का दिन और वर्ष का महीना (उनके नाम) कैसे प्राप्त करें।

क्या इसे बनाने का एक सरल तरीका है, या क्या मैं सरणियों का उपयोग करने पर विचार करूंगा जहां मैं बस सही मूल्य का उपयोग करके सूचकांक करूंगा now.getMonth()और now.getDay()?

जवाबों:


233

हां, आपको सरणियों की आवश्यकता होगी।

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var day = days[ now.getDay() ];
var month = months[ now.getMonth() ];

या आप date.js लाइब्रेरी का उपयोग कर सकते हैं ।


संपादित करें:

यदि आप इनका अक्सर उपयोग करने जा रहे हैं, तो आप Date.prototypeएक्सेसिबिलिटी के लिए विस्तार कर सकते हैं ।

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

    var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

    Date.prototype.getMonthName = function() {
        return months[ this.getMonth() ];
    };
    Date.prototype.getDayName = function() {
        return days[ this.getDay() ];
    };
})();

var now = new Date();

var day = now.getDayName();
var month = now.getMonthName();

2
@Will: आपका स्वागत है। FYI करें, यदि आप अक्सर ऐसा करने जा रहे हैं, तो आप आसानी से Dateऑब्जेक्ट में कार्यक्षमता को प्रोटोटाइप कर सकते हैं । मैं एक मिनट में अपडेट करूंगा।
user113716

3
अपने डेटा का स्थानीयकरण करें और एक-भाषा-केवल सरणियों की कोई आवश्यकता नहीं है! selectLocale = 'en-us'; selectDate.toLocaleString (चयनितलोकेल, {माह: "लंबी"});
रयान लोगग्रथिम

मैंने यह अभी किया है, लेकिन सोमवार को सरणी में पहले तत्व के रूप में उपयोग करना था, रविवार को नहीं। फिर भी, महान काम करता है।
nrowegt

4
नहीं नहीं नहीं नहीं। बस मानक जावास्क्रिप्ट तिथि वर्ग का उपयोग करें। सरणियों या एक अतिरिक्त पुस्तकालय के लिए कोई ज़रूरत नहीं है। मेरा उत्तर देखें: stackoverflow.com/a/50293232/760777
RWC

52

मानक जावास्क्रिप्ट दिनांक वर्ग का उपयोग करें। सरणियों की आवश्यकता नहीं है। अतिरिक्त पुस्तकालयों के लिए कोई ज़रूरत नहीं है।

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

var options = {  weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };
var prnDt = 'Printed on ' + new Date().toLocaleTimeString('en-us', options);

console.log(prnDt);


@RWC यह अच्छा है, लेकिन मैं बाकी तारीखों के बिना केवल कार्यदिवस कैसे प्राप्त करूं? IE मैं saturdayइसके बजाय चाहते हैं saturday, 9th february 2019
व्लादिमीर नुल

4
@ वाल्दिमीर नूल: var prnDt = 'मुद्रित' + नई तिथि ()। ToLalealeDateString ('en-us', {कार्यदिवस: 'लंबी'}); console.log (prnDt);
RWC

निश्चित रूप से इसे करने का सबसे अच्छा तरीका है।
डिएगो विक्टर डी जीसस

@Vladimir फ़ायरफ़ॉक्स के साथ एक मुद्दा है, समय हमेशा प्रदर्शित होता है, फिर:new Date().toLocaleTimeString(language, { weekday: 'long'}).split(' ')[0]
ब्रूनो एल।

8

एक चीज जो आप कर सकते हैं वह है वीकेंड को वापस करने के लिए डेट ऑब्जेक्ट एक्सटेंड करना:

Date.prototype.getWeekDay = function() {
    var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    return weekday[this.getDay()];
}

इसलिए, आप केवल date.getWeekDay () को कॉल कर सकते हैं;


7

जैसा कि @ एल-रे ने पहले ही सुझाव दिया है, आप पल में देख सकते हैं। जेएस भी

नमूना

var today = moment();
var result = {
  day: today.format("dddd"),
  month: today.format("MMM")
}

document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>


5

दुर्भाग्य से, Dateजावास्क्रिप्ट में ऑब्जेक्ट केवल संख्यात्मक प्रारूप में महीनों के बारे में जानकारी देता है। आप जो तेज़ काम कर सकते हैं, वह है महीनों की एक सरणी बनाना (वे अक्सर बदलने वाले नहीं होते हैं!) और एक फ़ंक्शन बनाते हैं जो संख्या के आधार पर नाम देता है।

कुछ इस तरह:

function getMonthNameByMonthNumber(mm) { 
   var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

   return months[mm]; 
}

आपका कोड इसलिए बन जाता है:

var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+  now.getFullYear() + " at " + h + ":" + m + ":" s;

5
var GetWeekDays = function (format) {
    var weekDays = {};

    var curDate = new Date();
    for (var i = 0; i < 7; ++i) {
        weekDays[curDate.getDay()] = curDate.toLocaleDateString('ru-RU', {
            weekday: format ? format : 'short'
        });

        curDate.setDate(curDate.getDate() + 1);
    }

    return weekDays;
};

me.GetMonthNames = function (format) {
    var monthNames = {};

    var curDate = new Date();
    for (var i = 0; i < 12; ++i) {
        monthNames[curDate.getMonth()] = curDate.toLocaleDateString('ru-RU', {
            month: format ? format : 'long'
        });

        curDate.setMonth(curDate.getMonth() + 1);
    }

    return monthNames;
};

आरयू-आरयू एन-यूएस (अमेरिकी अंग्रेजी के लिए) या एन-जीबी (ब्रिटिश अंग्रेजी के लिए) होगा।
सारा


3

से https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

ToLocaleDateString () विधि इस तिथि की तारीख हिस्से की एक भाषा संवेदनशील प्रतिनिधित्व के साथ एक स्ट्रिंग देता है। नए स्थान और विकल्प तर्क, एप्लिकेशन को उस भाषा को निर्दिष्ट करते हैं जिसका प्रारूपण सम्मेलनों का उपयोग किया जाना चाहिए और फ़ंक्शन के व्यवहार को अनुकूलित करने की अनुमति देता है। पुराने कार्यान्वयन में, जो स्थान और विकल्प के तर्कों को अनदेखा करते हैं, उपयोग किए गए लोकेल और स्ट्रिंग के रूप पूरी तरह से कार्यान्वयन पर निर्भर होते हैं।

लंबा फार्म:

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

एक लाइन:

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

नोट: स्थानीय भाषा के लिए अन्य भाषा विकल्प हैं, लेकिन यूएस अंग्रेजी के लिए यहां प्रस्तुत किया गया है


2

आप datejs को देख सकते हैं जो उदाहरण के लिए स्थानीय दिनांक आउटपुट को पार्स करता है।

स्वरूपण आपके उदाहरण में इस तरह दिख सकता है:

new Date().toString('dddd, d MMMM yyyy at HH:mm:ss') 

1

यह आसान है। आप नाम प्राप्त करने के लिए केवल सप्ताह के दिनों में प्रदर्शित करने के लिए विकल्प toLocaleDateString () में सेट कर सकते हैं। उदाहरण के लिए:

(नई तिथि ()) .LocaleDateString ('एन-यूएस', {कार्यदिवस: 'लंबी'}) केवल सप्ताह के दिन वापस आ जाएंगे। और (नई तिथि ())। toLalealeDateString ('एन-यूएस', {माह: 'लंबी'}) केवल वर्ष का महीना लौटाएगा।


0
  function currentDate() {
      var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
                     "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
      var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];                       
      var today = new Date();
      var dd   = today.getDate();
      var mm   = monthNames[today.getMonth()]; 
      var yyyy = today.getFullYear();
      var day  = days[today.getDay()];
      today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
      document.write(today +"<br>");
      document.write('Day is : ' + day );
  }
  currentDate();

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