답변:
더 짧은 버전 :
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 년에 처음 쓴 저의 답변은 구식입니다. 더 나은 솔루션 은 David Storey의 답변 을 참조하십시오 .
new Date()
반환 Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)
하는 것조차도 Date 객체에 이미 내부적으로 정의 된 모든 달 (주 및 요일 이름)이 공개되어 있지 않다는 것을 분명히 실망 스럽 습니다. 따라서 다시 입력해야합니다. :(
String#split
와 toString
나 toDateString
.
이제 ECMAScript Internationalization 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
API 를 사용하면 매번 로캘과 옵션을 전달해야합니다. 여러 다른 날짜에 동일한 로캘 정보 및 서식 옵션을 사용하려는 경우 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".
자세한 내용은 Internationalization API 에 대한 내 블로그 게시물을 참조하십시오 .
현지화를 지원하는 또 하나는 다음과 같습니다. :)
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
. 그래도 다른 JS 구현에 대한 훌륭한 답변입니다!
Date 프로토 타입을 확장하지 않아도되고 (이를 원하지 않는 몇 가지 이유가있는 경우) 실제로 매우 쉬운 방법을 찾을 수 있습니다.
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"
이 함수는 모든 javascript Date 객체에 적용됩니다 .
다음 과 같이 사용할 수 format
있는 moment.js 라이브러리 의 기능을 진심으로 추천합니다 .
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
and가 포함 date-fns
되지만, 요즘 Internationalization API에 대한 광범위한 브라우저 지원이 있습니다 .
이것에 의해 날짜 객체로부터의 일반적인 쉬운 프로세스가 수행 될 수있다.
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
datejs 를 사용 하여 그렇게 할 수 있습니다 . FormatSpecifiers를 확인하십시오. MMMM은 월 이름을 제공합니다.
var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
그리고 datejs는 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
Chrome 및 IE 11에서 테스트되었으며 정상적으로 작동합니다. mozilla에서는 전체 날짜를 반환하므로 일부 수정이 필요합니다.
toLocaleString
모든 월 이름을 보유하고 인덱스를 가리키는 배열을 선언하는 대신 아래와 같이 더 짧은 버전으로 작성할 수도 있습니다.
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" })
요즘의 자연스러운 형식은 Moment.js를 사용하는 것입니다.
문자열 형식으로 월을 얻는 방법은 Moment.js에서 매우 간단합니다. 코드에 월 이름을 하드 코딩 할 필요가 없습니다. 현재 월과 연도를 월 이름 형식과 풀 년으로 가져 오려면 (2015 년 5 월) :
moment(new Date).format("MMMM YYYY");
Luxon
and를 포함 date-fns
하지만 현재 Internationalization API에 대한 광범위한 브라우저 지원이 있습니다 .
날짜 형식을 지정하는 다른 방법
new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"
사용 가능한 여러 날짜 형식 기 중 하나를 사용할 수 있습니다. 이는 JavaScript 사양에 속하므로 브라우저 및 서버 측 모드에서 모두 사용할 수 있습니다.
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);
이렇게하면 약식 월 이름 (예 : 10 월)이 표시됩니다. 초기화 및 로캘에 따라 날짜가 모든 종류의 형식으로 나올 것이라고 생각하므로 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
은 이미 2 번 주어졌으며 매우 큰 라이브러리이며이를 위해 과도합니다. 현대의 대안은 Luxon
and를 포함 date-fns
하지만 현재 Internationalization API에 대한 광범위한 브라우저 지원이 있습니다 .
검도를 사용하는 경우에도 수행 할 수 있습니다.
kendo.toString(dateobject, "MMMM");
다음은 검도 사이트 의 포맷터 목록입니다 .
"d"1부터 31까지의 달을 렌더링합니다.
"dd"01부터 31까지의 달입니다.
"ddd"요일의 약칭입니다.
"dddd"요일의 전체 이름입니다.
"f"날짜 및 시간 값에서 10 분의 1 초입니다.
"ff"날짜 및 시간 값에서 100 분의 1 초입니다.
"fff"날짜 및 시간 값의 밀리 초입니다.
"M"1부터 12까지의 달입니다.
"MM"01에서 12까지의 달입니다.
"MMM"달의 약칭입니다.
"MMMM"달의 전체 이름입니다.
"h"1에서 12 사이의 12 시간제를 사용하는 시간입니다.
"hh"01에서 12 사이의 12 시간제를 사용하는 시간입니다.
"H"1에서 23 사이의 24 시간제를 사용하는 시간.
"HH"01에서 23 사이의 24 시간제를 사용하는 시간입니다.
"m"0에서 59 사이의 분입니다.
"mm"00에서 59 사이의 분입니다.
"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'}));
Firefox 설명서 에서 자세한 정보를 찾을 수 있습니다
순간을 사용하지 않고 월 이름을 표시하려면-
.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;
}
};
}
나에게 이것은 최선의 해결책이다.
TypeScript도
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" ];
? 개별적으로 추가하는 것보다 훨씬 짧습니다 ...
내가 생각해 낸 부분 해결책이 있습니다. 월과 일 이름을 추출하기 위해 정규식을 사용합니다. 그러나 지역 및 언어 옵션 (Windows)을 살펴보면 다른 문화권의 형식 순서가 다릅니다 ... 아마도 더 나은 정규 표현식 패턴이 유용 할 수 있습니다.
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);