मैं जावास्क्रिप्ट में इस दिनांक ऑब्जेक्ट से महीने (जैसे: अक्टूबर / अक्टूबर) का नाम कैसे उत्पन्न कर सकता हूं?
var objDate = new Date("10/11/2009");
मैं जावास्क्रिप्ट में इस दिनांक ऑब्जेक्ट से महीने (जैसे: अक्टूबर / अक्टूबर) का नाम कैसे उत्पन्न कर सकता हूं?
var objDate = new Date("10/11/2009");
जवाबों:
छोटा संस्करण:
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 में लिखा था पुराना है। बेहतर समाधान के लिए डेविड स्टोरी का जवाब देखें ।
new Date()
लौटने का Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)
जो स्पष्ट रूप से मतलब है कि दिनांक वस्तु पहले से ही यह सब आंतरिक रूप से परिभाषित किया गया है (महीने और दिन के नाम) यह सार्वजनिक नहीं है, इसलिए हमें इसे फिर से लिखना होगा। :(
String#split
साथ toString
या का उपयोग कर एक बेहतर तरीका हो गया है toDateString
।
अब 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".
अधिक जानकारी के लिए अंतर्राष्ट्रीयकरण एपीआई पर मेरी ब्लॉग पोस्ट देखें ।
यहाँ एक और है, स्थानीयकरण के समर्थन के साथ :)
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: [...]};
Date.locale
में काम नहीं करेगाundefined
। हालांकि यह अन्य जेएस कार्यान्वयन के लिए एक उत्कृष्ट जवाब है!
यदि आपको दिनांक प्रोटोटाइप का विस्तार करने में कोई आपत्ति नहीं है (और ऐसा नहीं करने के लिए कुछ अच्छे कारण हैं), तो आप वास्तव में बहुत आसान विधि के साथ आ सकते हैं:
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"
ये फ़ंक्शन तब सभी जावास्क्रिप्ट तिथि वस्तुओं पर लागू होंगे ।
मैं हृदय से इस 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" का उपयोग करें
अन्य विशेषताओं की लंबी सूची के अलावा, इसमें अंतर्राष्ट्रीयकरण के लिए मजबूत समर्थन है ।
Luxon
और date-fns
, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है ।
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();
दिनांक वस्तु से कुछ सामान्य आसान प्रक्रिया इसके द्वारा की जा सकती है।
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
आप ऐसा करने के लिए डेटज का उपयोग कर सकते हैं । FormatSpecifiers की जाँच करें , MMMM आपको महीने का नाम देता है:
var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
और डेटज को 150 से अधिक स्थानों के लिए स्थानीयकृत किया गया! यहाँ देखें
प्रयत्न:
var objDate = new Date("10/11/2009");
var strDate =
objDate.toLocaleString("en", { day: "numeric" }) + ' ' +
objDate.toLocaleString("en", { month: "long" }) + ' ' +
objDate.toLocaleString("en", { year: "numeric"});
यहां एक तरीका है जो हार्ड-कोडित सरणी पर निर्भर नहीं करता है और कई स्थानों का समर्थन करता है।
यदि आपको संपूर्ण सरणी की आवश्यकता है:
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
दुर्भाग्य से महीने का नाम निकालने का सबसे अच्छा तरीका 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'
ऐरे को घोषित करने के बजाय जो पूरे महीने का नाम रखता है और फिर एक इंडेक्स के साथ इंगित करता है, हम इसे नीचे दिए गए छोटे संस्करण में भी लिख सकते हैं:
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" }
मापदंडों का उपयोग करते समय )
new Date().toLocaleString(navigator.language, { month: "short" })
document.write(new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}))
इस दिन प्राकृतिक प्रारूप Moment.js का उपयोग करना है।
महीने को एक स्ट्रिंग प्रारूप में प्राप्त करने का तरीका, Moment.js में बहुत सरल है। आपके कोड में महीने के नामों को हार्ड कोड करने की कोई आवश्यकता नहीं है: वर्तमान माह और वर्ष को महीने के प्रारूप और पूर्ण वर्ष (मई 2015) में प्राप्त करने के लिए:
moment(new Date).format("MMMM YYYY");
Luxon
और date-fns
, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है ।
तारीख को प्रारूपित करने का दूसरा तरीका
new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"
आप कई उपलब्ध दिनांक योगों में से एक का उपयोग कर सकते हैं। चूंकि यह जावास्क्रिप्ट विनिर्देश के भीतर है, यह ब्राउज़र और सर्वर-साइड मोड दोनों में उपलब्ध होगा।
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 पर और अधिक हैं
यदि आप किसी बाहरी लाइब्रेरी का उपयोग नहीं करना चाहते हैं, या महीने के नामों की एक सरणी स्टोर करना चाहते हैं, या यदि ECMAScript अंतर्राष्ट्रीयकरण API ब्राउज़र संगतता के कारण पर्याप्त अच्छा नहीं है, तो आप हमेशा जानकारी निकालने से पुराने तरीके से कर सकते हैं। दिनांक उत्पादन:
var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);
यह आपको संक्षिप्त माह का नाम देगा, जैसे कि अक्टूबर। मेरा मानना है कि आरंभ के आधार पर तिथि सभी प्रकार के स्वरूपों में आ जाएगी और आपका स्थान इतना अच्छा है कि toDateString()
रिटर्न पर एक नज़र डालें और उसके substring()
आधार पर अपने मूल्यों को पुनर्गठित करें ।
यदि आप jQuery का उपयोग कर रहे हैं, तो आप शायद jQuery UI का भी उपयोग कर रहे हैं, जिसका अर्थ है कि आप $ .datepicker.formatDate () का उपयोग कर सकते हैं ।
$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] ); // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
मेरा सर्वश्रेष्ठ समाधान इस प्रकार है:
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;
गति के साथ , बस प्रारूप संकेतन का उपयोग करें ।
const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August
moment
एक बहुत बड़ी लाइब्रेरी है, और इसके लिए रास्ता ओवरकिल है। आधुनिक विकल्पों में शामिल हैं Luxon
और date-fns
, लेकिन फिर, अंतर्राष्ट्रीयकरण एपीआई के लिए आजकल व्यापक ब्राउज़र समर्थन है ।
यह भी किया जा सकता है यदि आप केन्डो का उपयोग कर रहे हैं।
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 तारीख तार को पार्स करने के लिए स्वरूपों का उपयोग करते समय स्थानीय समय क्षेत्र।
आप बस 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'}));
आप फ़ायरफ़ॉक्स प्रलेखन में अधिक जानकारी पा सकते हैं
यदि आप क्षण का उपयोग नहीं करना चाहते हैं और महीने का नाम प्रदर्शित करना चाहते हैं -
.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;
}
};
}
मेरे लिए यह सबसे अच्छा उपाय है,
टाइपस्क्रिप्ट के लिए भी
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"]
नामों को किसी सरणी में संग्रहीत करें और महीने के सूचकांक द्वारा देखें।
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()]);
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? उन्हें व्यक्तिगत रूप से जोड़ने की तुलना में कम ...
मेरे पास एक आंशिक समाधान है जिसके साथ मैं आया था। यह महीने और दिन के नाम को निकालने के लिए एक नियमित अभिव्यक्ति का उपयोग करता है। लेकिन जैसा कि मैं इस क्षेत्र और भाषा के विकल्पों (विंडोज़) के माध्यम से देखता हूं, मुझे एहसास है कि विभिन्न संस्कृतियों में अलग-अलग प्रारूप क्रम हैं ... शायद एक बेहतर नियमित अभिव्यक्ति पैटर्न उपयोगी हो सकता है।
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(","));
}
बस कई अन्य उत्कृष्ट उत्तरों पर विस्तार - यदि आप 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 ने कहा कि इसका प्राथमिक लाभ है।
महीने का नाम पाने के लिए:
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
बस एक साधारण आवरण लिखें 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));
एक त्वरित हैक मैंने इस्तेमाल किया जो अच्छी तरह से काम करता है:
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);