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


672

मैं जावास्क्रिप्ट में इस दिनांक ऑब्जेक्ट से महीने (जैसे: अक्टूबर / अक्टूबर) का नाम कैसे उत्पन्न कर सकता हूं?

var objDate = new Date("10/11/2009");

अच्छा होगा यदि stackoverflow.com/a/18648314/5846045 भविष्य के पाठकों को बेहतर उत्तर देने के लिए मार्गदर्शन करने के लिए स्वीकार किया जा सकता है
Boghyon Hoffmann

जवाबों:


1136

छोटा संस्करण:

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

const d = new Date();
document.write("The current month is " + monthNames[d.getMonth()]);

नोट (2019-03-08) - मेरे द्वारा यह उत्तर जो मैंने मूल रूप से 2009 में लिखा था पुराना है। बेहतर समाधान के लिए डेविड स्टोरी का जवाब देखें ।


401
यह थोड़ा निराशा की बात है कि यहां तक ​​कि new Date()लौटने का Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)जो स्पष्ट रूप से मतलब है कि दिनांक वस्तु पहले से ही यह सब आंतरिक रूप से परिभाषित किया गया है (महीने और दिन के नाम) यह सार्वजनिक नहीं है, इसलिए हमें इसे फिर से लिखना होगा। :(
ज़ानोना

9
आदर्श समाधान नहीं यदि किसी को समर्थित प्रत्येक भाषा के लिए महीने के नाम शामिल करने हों। के String#splitसाथ toStringया का उपयोग कर एक बेहतर तरीका हो गया है toDateString
रयान

23
कई भाषाएँ = बहुआयामी सरणी;) अनुवाद ["महीनानाम"] [currentLanguage] [d.getMonth ()]
nuala

25
@ ज़नोना - एक तारीख वस्तु के लिए "यह सब आंतरिक रूप से परिभाषित" जरूरी नहीं है। ECMA-262 में सभी की आवश्यकता होती है जो एक समय मान है , जो एक संख्या है। आप जो देख रहे हैं, वह Date.prototype.toString का परिणाम है , जो कार्यान्वयन पर निर्भर है।
RobG

9
@ डिविज़न लेकिन उस ऐरे को हर बार जब आप इसे एक्सेस करना चाहते हैं, तब उसे पुनः प्राप्त करता है।
कोल जॉनसन

776

अब ECMAScript अंतर्राष्ट्रीयकरण API के साथ ऐसा करना संभव है:

const date = new Date(2009, 10, 10);  // 2009-11-10
const month = date.toLocaleString('default', { month: 'long' });
console.log(month);

'long'महीने का पूरा नाम, 'short'संक्षिप्त नाम के 'narrow'लिए और अधिक न्यूनतम संस्करण के लिए उपयोग करता है, जैसे कि वर्णमाला भाषाओं में पहला अक्षर।

आप ब्राउज़र 'default'से किसी भी स्थान को बदल सकते हैं जिसे आप कृपया (जैसे 'en-us'), और यह उस भाषा / देश के लिए सही नाम का उपयोग करेगा।

toLocaleStringएपीआई के साथ आपको हर बार लोकेल और विकल्पों में पास करना होगा। यदि आप एक ही स्थानीय जानकारी का उपयोग करने जा रहे हैं और कई अलग-अलग तारीखों पर विकल्पों का प्रारूपण कर रहे हैं, तो आप Intl.DateTimeFormatइसके बजाय उपयोग कर सकते हैं :

const formatter = new Intl.DateTimeFormat('fr', { month: 'short' });
const month1 = formatter.format(new Date());
const month2 = formatter.format(new Date(2003, 5, 12));
console.log(`${month1} and ${month2}`); // current month in French and "juin".

अधिक जानकारी के लिए अंतर्राष्ट्रीयकरण एपीआई पर मेरी ब्लॉग पोस्ट देखें ।


1
मैं इस बात की पुष्टि कर सकता हूं कि सफारी प्रौद्योगिकी पूर्वावलोकन के पास इसके लिए समर्थन है। मुझे लगता है कि स्वीकृत उत्तर होना चाहिए
सलमान हसरत खान

1
नोड में भी काम करता है!
मिकमेकाना

4
महान समाधान, लेकिन मेरे उपयोग के मामले के लिए यह बहुत धीमा हो गया। मैं कई सौ वस्तुओं का प्रसंस्करण कर रहा था और महीने और साल (क्रोम, सफारी) दोनों को प्राप्त करने के लिए लगभग 1ms प्रति आइटम औसत था। मैं स्वीकृत उत्तर का उपयोग करके समाप्त हो गया, लेकिन केवल इसलिए कि इसने बहुत बेहतर प्रदर्शन किया। यह मेरा पसंदीदा तरीका होगा यदि मुझे केवल इसे कुछ बार कॉल करने की आवश्यकता है।
t.888

7
यह अब अधिकांश ब्राउज़रों पर समर्थित है: caniuse.com/#search=intl
eyal83

2
रिएक्ट नेटिव पर ध्यान दें, यह iOS डिवाइसों के लिए काम करता है, लेकिन एंड्रॉइड पर, यह गलत तरीके से प्रदर्शित होता है (बस पूरे टाइमस्टैम्प को बाहर निकालता है)।
हार्डगनर

162

यहाँ एक और है, स्थानीयकरण के समर्थन के साथ :)

Date.prototype.getMonthName = function(lang) {
    lang = lang && (lang in Date.locale) ? lang : 'en';
    return Date.locale[lang].month_names[this.getMonth()];
};

Date.prototype.getMonthNameShort = function(lang) {
    lang = lang && (lang in Date.locale) ? lang : 'en';
    return Date.locale[lang].month_names_short[this.getMonth()];
};

Date.locale = {
    en: {
       month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
       month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    }
};

फिर आप आसानी से अन्य भाषाओं के लिए समर्थन जोड़ सकते हैं:

Date.locale.fr = {month_names: [...]};

2
ध्यान दें कि यह नोड पर 6.x के रूप Date.localeमें काम नहीं करेगाundefined । हालांकि यह अन्य जेएस कार्यान्वयन के लिए एक उत्कृष्ट जवाब है!
मिकमेकाना

यदि स्थानीय नाम सरणियों Date.prototype.toLocaleString का उपयोग करके बनाया गया था, तो यह समझ में आ सकता है । इसके अलावा, अंतर्निहित प्रोटोटाइप और वस्तुओं का विस्तार करना एक अच्छा विचार नहीं है।
रॉब

62

यदि आपको दिनांक प्रोटोटाइप का विस्तार करने में कोई आपत्ति नहीं है (और ऐसा नहीं करने के लिए कुछ अच्छे कारण हैं), तो आप वास्तव में बहुत आसान विधि के साथ आ सकते हैं:

Date.prototype.monthNames = [
    "January", "February", "March",
    "April", "May", "June",
    "July", "August", "September",
    "October", "November", "December"
];

Date.prototype.getMonthName = function() {
    return this.monthNames[this.getMonth()];
};
Date.prototype.getShortMonthName = function () {
    return this.getMonthName().substr(0, 3);
};

// usage:
var d = new Date();
alert(d.getMonthName());      // "October"
alert(d.getShortMonthName()); // "Oct"

ये फ़ंक्शन तब सभी जावास्क्रिप्ट तिथि वस्तुओं पर लागू होंगे ।


6
"और ऐसा नहीं करने के लिए कुछ अच्छे कारण हैं"। बस जिज्ञासु: किन कारणों से आपका मतलब है?
KooiInc

13
@ कुइलनक: यह इसलिए है क्योंकि आप अनिवार्य रूप से वैश्विक अंतरिक्ष में काम कर रहे हैं। यदि आप किसी और के कार्यों या पुस्तकालयों को आयात करते हैं जो यह भी करते हैं, तो वे एक-दूसरे को अधिलेखित कर सकते हैं।
निक

61

मैं हृदय से इस formatकार्य की अनुशंसा करता हूं । क्षण पुस्तकालय, जिसे आप इस तरह उपयोग कर सकते हैं:

moment().format("MMM");  // "Apr" - current date
moment(new Date(2012, 01, 04)).format("MMM");  // "Feb" - from a local date
moment.utc(new Date(2012, 00, 04).format("MMM"); // "Jan" - from a UTC date

यदि आपको महीने के पूरे नाम की आवश्यकता है, तो "MMM" के बजाय "MMMM" का उपयोग करें

अन्य विशेषताओं की लंबी सूची के अलावा, इसमें अंतर्राष्ट्रीयकरण के लिए मजबूत समर्थन है


2
पहले वाले का परिणाम "अप्रैल" होगा। "MMM" महीने के पहले तीन अक्षरों को दिखाता है, अगर आप इसके बजाय "MMMM" का पूरा नाम उपयोग करना चाहते हैं। मदद के लिए उनके दस्तावेज देखें ।
तोमर

यदि आप भारी अनुकूलन के मार्ग पर जा रहे हैं और http अनुरोधों को कम कर रहे हैं, तो यह आपके लिए विकल्प नहीं हो सकता है। इसके बजाय, केवल एक महीने के नामों की एक सरणी का उपयोग करके छड़ी करें यदि आप केवल कोड के एक पंक्ति में महीने के नामों को प्रारूपित करने जा रहे हैं।
ओजेजीजेंट जूल

3
पल एक बहुत बड़ी लाइब्रेरी है, और इसके लिए रास्ता ओवरकिल है। आधुनिक विकल्पों में शामिल हैं Luxonऔर date-fns, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है
दान डस्केलस्क्यू

21
Date.prototype.getMonthName = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return monthNames[this.getMonth()];
}

इसका उपयोग किया जा सकता है

var month_Name = new Date().getMonthName();

18

दिनांक वस्तु से कुछ सामान्य आसान प्रक्रिया इसके द्वारा की जा सकती है।

var monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];
var monthShortNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];

function dateFormat1(d) {
  var t = new Date(d);
  return t.getDate() + ' ' + monthNames[t.getMonth()] + ', ' + t.getFullYear();
}

function dateFormat2(d) {
  var t = new Date(d);
  return t.getDate() + ' ' + monthShortNames[t.getMonth()] + ', ' + t.getFullYear();
}

console.log(dateFormat1(new Date()))
console.log(dateFormat2(new Date()))

या आप जैसे डेट प्रोटोटाइप बना सकते हैं

Date.prototype.getMonthName = function() {
  var monthNames = ["January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ];
  return monthNames[this.getMonth()];
}


Date.prototype.getFormatDate = function() {
  var monthNames = ["January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ];
  return this.getDate() + ' ' + monthNames[this.getMonth()] + ', ' + this.getFullYear();
}


console.log(new Date().getMonthName())
console.log(new Date().getFormatDate())

उदाहरण के लिए:

var dateFormat3 = new Date().getMonthName(); # March

var dateFormat4 = new Date().getFormatDate(); # 16 March, 2017


2
धन्यवाद! मैं अभी तक प्रोटोटाइप को नहीं समझता, लेकिन मैं इसे एक कोशिश देने के लिए उत्सुक हूं।
एरिक हेपरले - CodeSlayer2010

17

आप ऐसा करने के लिए डेटज का उपयोग कर सकते हैं । FormatSpecifiers की जाँच करें , MMMM आपको महीने का नाम देता है:

var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));

और डेटज को 150 से अधिक स्थानों के लिए स्थानीयकृत किया गया! यहाँ देखें


12

प्रयत्न:

var objDate = new Date("10/11/2009");

var strDate =
    objDate.toLocaleString("en", { day: "numeric" }) + ' ' +
    objDate.toLocaleString("en", { month: "long"  }) + ' ' +
    objDate.toLocaleString("en", { year: "numeric"});

यह विंटर 2017 में काम किया! अन्य उपयोगकर्ताओं द्वारा 3 साल या उससे पहले सुझाए गए "एन-यू" का उपयोग करना क्रोम में काम नहीं करता है।
एरिक हेपरले - CodeSlayer2010

9

यहां एक तरीका है जो हार्ड-कोडित सरणी पर निर्भर नहीं करता है और कई स्थानों का समर्थन करता है।

यदि आपको संपूर्ण सरणी की आवश्यकता है:

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};

उपयोग:

console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]

यदि आपको केवल एक चयनित महीना (अधिक तेज़) चाहिए:

var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};

उपयोग:

console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar

क्रोम और IE 11 पर परीक्षण और ठीक काम करता है। मोज़िला पर कुछ संशोधनों की आवश्यकता होती है, क्योंकि यह पूरी तारीख को वापस कर देती है।


यह अभी तक सफारी में भी काम नहीं करेगा। के कारणtoLocaleString
सर्गेई पैनफिलोव

8

दुर्भाग्य से महीने का नाम निकालने का सबसे अच्छा तरीका UTCString प्रतिनिधित्व से है:

Date.prototype.monthName = function() {
    return this.toUTCString().split(' ')[2]
};

d = new Date();
//=> Thu Mar 06 2014 23:05:21 GMT+0000 (GMT)

d.monthName();
//=> 'Mar'

8

ऐरे को घोषित करने के बजाय जो पूरे महीने का नाम रखता है और फिर एक इंडेक्स के साथ इंगित करता है, हम इसे नीचे दिए गए छोटे संस्करण में भी लिख सकते हैं:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug

कृपया ध्यान दें कि यह ब्राउज़रों के पार मज़बूती से काम नहीं करता है ... सफारी (मोबाइल और डेस्कटॉप) कुछ इस तरह से आउटपुट करेगा: MAY 1, 2015 AT 12:00:00 AM GMT-4( { month: "long" }मापदंडों का उपयोग करते समय )
डेविड एम।

1
आप डिफॉल्ट का उपयोग करके भी प्राप्त कर सकते हैंnew Date().toLocaleString(navigator.language, { month: "short" })
रेमो एच। जानसन


7

इस दिन प्राकृतिक प्रारूप Moment.js का उपयोग करना है।

महीने को एक स्ट्रिंग प्रारूप में प्राप्त करने का तरीका, Moment.js में बहुत सरल है। आपके कोड में महीने के नामों को हार्ड कोड करने की कोई आवश्यकता नहीं है: वर्तमान माह और वर्ष को महीने के प्रारूप और पूर्ण वर्ष (मई 2015) में प्राप्त करने के लिए:

  moment(new Date).format("MMMM YYYY");

पहले से ही अन्य प्रयोजनों के लिए स्थापित होने के साथ, यह सबसे सरल समाधान है।
सीएफपी सपोर्ट

1
पल एक बहुत बड़ी लाइब्रेरी है, और इसके लिए रास्ता ओवरकिल है। आधुनिक विकल्पों में शामिल हैं Luxonऔर date-fns, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है
डेन डस्केलस्क्यू

7

तारीख को प्रारूपित करने का दूसरा तरीका

new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"

6

आप कई उपलब्ध दिनांक योगों में से एक का उपयोग कर सकते हैं। चूंकि यह जावास्क्रिप्ट विनिर्देश के भीतर है, यह ब्राउज़र और सर्वर-साइड मोड दोनों में उपलब्ध होगा।

objDate.toString().split(" ")[1]; // gives short name, unsure about locale 
objDate.toLocaleDateString.split(" ")[0]; // gives long name

जैसे

js> objDate = new Date(new Date() - 9876543210)
Mon Feb 04 2013 12:37:09 GMT-0800 (PST)
js> objDate.toString().split(" ")[1]
Feb
js> objDate.toLocaleString().split(" ")[0]
February

Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date पर और अधिक हैं


4

यदि आप किसी बाहरी लाइब्रेरी का उपयोग नहीं करना चाहते हैं, या महीने के नामों की एक सरणी स्टोर करना चाहते हैं, या यदि ECMAScript अंतर्राष्ट्रीयकरण API ब्राउज़र संगतता के कारण पर्याप्त अच्छा नहीं है, तो आप हमेशा जानकारी निकालने से पुराने तरीके से कर सकते हैं। दिनांक उत्पादन:

var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);

यह आपको संक्षिप्त माह का नाम देगा, जैसे कि अक्टूबर। मेरा मानना ​​है कि आरंभ के आधार पर तिथि सभी प्रकार के स्वरूपों में आ जाएगी और आपका स्थान इतना अच्छा है कि toDateString()रिटर्न पर एक नज़र डालें और उसके substring()आधार पर अपने मूल्यों को पुनर्गठित करें ।


3

यदि आप jQuery का उपयोग कर रहे हैं, तो आप शायद jQuery UI का भी उपयोग कर रहे हैं, जिसका अर्थ है कि आप $ .datepicker.formatDate () का उपयोग कर सकते हैं ।

$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] );   // dutch
$.datepicker.formatDate( "dd MM yy", objDate );

3

मेरा सर्वश्रेष्ठ समाधान इस प्रकार है:

       var dateValue = Date();
       var month = dateValue.substring(4,7);
       var date = dateValue.substring(8,10);
       var year = dateValue.substring(20,24);
       var finaldateString = date+"-"+month+"-"+year;

मेरे लिए बहुत भंगुर लगता है ... और यह वास्तव में ओपी के सवाल का जवाब नहीं देता है
डेविड एम।

1
यह आपका "सर्वश्रेष्ठ समाधान" क्या है?
डैन डस्केलस्क्यू

3

गति के साथ , बस प्रारूप संकेतन का उपयोग करें ।

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August

1
इसके अलावा answe को 2 बार पहले ही दिया जा चुका है, momentएक बहुत बड़ी लाइब्रेरी है, और इसके लिए रास्ता ओवरकिल है। आधुनिक विकल्पों में शामिल हैं Luxonऔर date-fns, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है
डैन डस्केलस्क्यू

3

यह भी किया जा सकता है यदि आप केन्डो का उपयोग कर रहे हैं।

kendo.toString(dateobject, "MMMM");

यहाँ किन्डो साइट से फ़ॉर्मेटर्स की सूची दी गई है :

"घ" महीने के दिन को प्रस्तुत करता है, 1 से 31 तक।

"dd" महीने का दिन, 01 से 31 तक।

"ddd" सप्ताह के दिन का संक्षिप्त नाम।

"dddd" सप्ताह के दिन का पूरा नाम।

"च" एक तारीख और समय मूल्य में एक दूसरे के दसवें।

"एफएफ" एक तारीख और समय मूल्य में एक सेकंड के सौवें हिस्से।

"fff" एक तिथि और समय मान में मिलीसेकंड।

"एम" महीने, 1 से 12 तक।

"एमएम" माह, 01 से 12 तक।

"MMM" महीने का संक्षिप्त नाम है।

"MMMM" महीने का पूरा नाम।

"एच" घंटा, 1 से 12 तक 12-घंटे की घड़ी का उपयोग कर।

"hh" घंटे, 01 से 12 तक 12 घंटे की घड़ी का उपयोग करते हुए।

"एच" घंटा, 1 से 23 तक 24 घंटे की घड़ी का उपयोग करते हुए।

"एचएच" घंटे, 01 से 23 तक 24 घंटे की घड़ी का उपयोग करते हुए।

"मी" मिनट, 59 से 0 से।

"मिमी" मिनट, 59 से 00 तक।

"s" दूसरा, 0 से 59 तक।

"ss" दूसरा, 00 से 59 तक।

"tt" AM / PM डिज़ाइनर।

"yy" वर्ष मूल्य से अंतिम दो वर्ण।

"yyyy" वर्ष पूर्ण मूल्य।

"zzz" UTC तारीख तार को पार्स करने के लिए स्वरूपों का उपयोग करते समय स्थानीय समय क्षेत्र।


3

आप बस Date.toLocaleDateString () का उपयोग कर सकते हैं और पैरामीटर के रूप में वांछित तारीख को पार्स कर सकते हैं

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

const options = {  year: 'numeric', month: 'short', day: 'numeric' };

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

console.log(event.toLocaleDateString('en-US', options));
// US format 


// In case you only want the month
console.log(event.toLocaleDateString(undefined, { month: 'short'}));
console.log(event.toLocaleDateString(undefined, { month: 'long'}));

आप फ़ायरफ़ॉक्स प्रलेखन में अधिक जानकारी पा सकते हैं


2

यदि आप क्षण का उपयोग नहीं करना चाहते हैं और महीने का नाम प्रदर्शित करना चाहते हैं -

.config($mdDateLocaleProvider) {
    $mdDateLocaleProvider.formatDate = function(date) {      
      if(date !== null) {
        if(date.getMonthName == undefined) {
          date.getMonthName = function() {
            var monthNames = [ "January", "February", "March", "April", "May", "June", 
            "July", "August", "September", "October", "November", "December" ];
            return monthNames[this.getMonth()];
          }
        }        
        var day = date.getDate();
        var monthIndex = date.getMonth();
        var year = date.getFullYear();
        return day + ' ' + date.getMonthName() + ' ' + year;
      }
    };
  }

2

मेरे लिए यह सबसे अच्छा उपाय है,

टाइपस्क्रिप्ट के लिए भी

const env = process.env.REACT_APP_LOCALE || 'en';

const namedMonthsArray = (index?: number): string[] | string => {
  const months = [];

  for (let month = 0; month <= 11; month++) {
    months.push(
      new Date(new Date('1970-01-01').setMonth(month))
        .toLocaleString(env, {
          month: 'long',
        })
        .toString(),
    );
  }
  if (index) {
    return months[index];
  }
  return months;
};

आउटपुट है

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

1

नामों को किसी सरणी में संग्रहीत करें और महीने के सूचकांक द्वारा देखें।

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

document.write("The current month is " + month[d.getMonth()]);

जावास्क्रिप्ट getMonth () विधि


22
क्यों नहीं var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];? उन्हें व्यक्तिगत रूप से जोड़ने की तुलना में कम ...
फ़िज़िक्स

1

मेरे पास एक आंशिक समाधान है जिसके साथ मैं आया था। यह महीने और दिन के नाम को निकालने के लिए एक नियमित अभिव्यक्ति का उपयोग करता है। लेकिन जैसा कि मैं इस क्षेत्र और भाषा के विकल्पों (विंडोज़) के माध्यम से देखता हूं, मुझे एहसास है कि विभिन्न संस्कृतियों में अलग-अलग प्रारूप क्रम हैं ... शायद एक बेहतर नियमित अभिव्यक्ति पैटर्न उपयोगी हो सकता है।

function testDateInfo() {
        var months = new Array();
        var days = new Array();
        var workingDate = new Date();
        workingDate.setHours(0, 0, 0, 0);
        workingDate.setDate(1);
        var RE = new RegExp("([a-z]+)","ig");
        //-- get day names 0-6
        for (var i = 0; i < 7; i++) {

            var day = workingDate.getDay();
            //-- will eventually be in order
            if (days[day] == undefined)
                days[day] = workingDate.toLocaleDateString().match(RE)[0];
            workingDate.setDate(workingDate.getDate() + 1);
        }
        //--get month names 0-11
        for (var i = 0; i < 12; i++) {
            workingDate.setMonth(i);
            months.push(workingDate.toLocaleDateString().match(RE)[1]);
        }
        alert(days.join(",") + " \n\r " + months.join(","));
    }

इसलिए, न्यूनतम रूप से यह अंग्रेजी और स्पेनिश के साथ काम करता है ... आईडी का संदेह कुछ भी है कि दिन, महीने की तारीख, वर्ष FORMAT
रेमस

मैंने इसे थोड़ा सा देखा है, मुझे लगता है कि एक सही भाषा स्वतंत्र समाधान के लिए आपको एक नियमित अभिव्यक्ति की आवश्यकता होगी जो UNICODE वर्ण श्रेणियों का उपयोग करता है। वर्ण श्रृंखला अलग-अलग वर्णमालाओं के लिए अलग-अलग होगी, इसलिए मुझे नहीं लगता कि एक आकार होगा जो सभी RegExp को फिट करता है जिसका हम उपयोग कर सकते हैं।
रेमस

0

बस कई अन्य उत्कृष्ट उत्तरों पर विस्तार - यदि आप jQuery का उपयोग कर रहे हैं - तो आप कुछ ऐसा कर सकते हैं

$.fn.getMonthName = function(date) {

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

    return monthNames[date.getMonth()];

};

कहाँ dateके बराबर है var d = new Date(somevalue)। वैश्विक नाम स्थान से बचने के बारे में @nickf ने कहा कि इसका प्राथमिक लाभ है।


0

महीने का नाम पाने के लिए:

Date.monthNames = function( ) {
var arrMonth = [],
    dateRef = new Date(),
    year = dateRef.getFullYear();

dateRef.setMonth(0);
while (year == dateRef.getFullYear()) {
    /* push le mois en lettre et passe au mois suivant */
    arrMonth.push( (dateRef.toLocaleString().split(' '))[2] );
    dateRef.setMonth( dateRef.getMonth() + 1);
}

return arrMonth;
}

alert(Date.monthNames().toString());

// -> janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre

http://jsfiddle.net/polinux/qb346/


0

बस एक साधारण आवरण लिखें toLocaleString:

function LocalDate(locale) {
  this.locale = locale;
}

LocalDate.prototype.getMonthName = function(date) {
  return date.toLocaleString(this.locale,{month:"long"});
};

var objDate = new Date("10/11/2009");

var localDate = new LocalDate("en");
console.log(localDate.getMonthName(objDate));

localDate.locale = "ru";
console.log(localDate.getMonthName(objDate));

localDate.locale = "zh";
console.log(localDate.getMonthName(objDate));


0

एक त्वरित हैक मैंने इस्तेमाल किया जो अच्छी तरह से काम करता है:

const monthNumber = 8;
const yearNumber = 2018;
const date = `${['Jan', 'Feb', 'Mar', 'Apr',
  'May', 'Jun', 'Jul', 'Aug',
  'Sep', 'Oct', 'Nov', 'Dec'][monthNumber - 1]
      } ${yearNumber}`;

console.log(date);

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