날짜에서 월 이름 가져 오기
JavaScript의이 날짜 개체에서 월 이름 (예 : 10 월 / 10 월)을 생성하려면 어떻게해야합니까?
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 년에 제가 쓴이 답변은 구식입니다. 더 나은 솔루션 은 David Storey의 답변 을 참조하십시오 .
이제 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
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 프로토 타입을 확장해도 괜찮다면 (그리고이를 원하지 않는 몇 가지 좋은 이유가 있습니다) 실제로 매우 쉬운 방법을 생각해 낼 수 있습니다.
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"을 사용하십시오.
다른 기능의 긴 목록 외에도 국제화를 강력하게 지원합니다 .
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();
이를 위해 datejs 를 사용할 수 있습니다 . FormatSpecifiers를 확인하면 MMMM이 월 이름을 제공합니다.
var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
datejs는 150 개 이상의 로케일로 현지화되었습니다! 여기를 보아라
날짜 개체에서 일반적인 쉬운 프로세스를 수행 할 수 있습니다.
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
시험:
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에서는 전체 날짜를 반환하므로 일부 수정이 필요합니다.
불행히도 월 이름을 추출하는 가장 좋은 방법은 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
요즘 자연스러운 형식은 Moment.js를 사용하는 것입니다.
월을 문자열 형식으로 가져 오는 방법은 Moment.js에서 매우 간단합니다. 코드에서 월 이름을 하드 코딩 할 필요가 없습니다. 현재 월과 연도를 월 이름 형식과 전체 연도 (2015 년 5 월)로 가져 오려면 다음을 수행하십시오.
moment(new Date).format("MMMM YYYY");
사용 가능한 여러 날짜 포맷터 중 하나를 사용할 수 있습니다. 이것은 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 에 더 많은 정보가 있습니다.
jQuery를 사용하는 경우 아마도 jQuery UI를 사용하고있을 것입니다. 즉, $ .datepicker.formatDate ()를 사용할 수 있습니다 .
$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] ); // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
외부 라이브러리를 사용하지 않거나 월 이름 배열을 저장하지 않거나 브라우저 호환성으로 인해 ECMAScript 국제화 API가 충분하지 않은 경우 항상 구식 방식으로 할 수 있습니다. 날짜 출력 :
var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);
이렇게하면 약식 월 이름 (예 : 10 월)이 제공됩니다. 날짜는 초기화 및 로케일에 따라 모든 종류의 형식으로 올 것이라고 믿으므로 toDateString()
반환 되는 항목을 살펴보고 이에 따라 substring()
값을 다시 계산하십시오 .
내 최고의 솔루션은 다음과 같습니다.
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
검도를 사용하는 경우에도 가능합니다.
kendo.toString(dateobject, "MMMM");
다음은 검도 사이트 의 포맷터 목록입니다 .
"d"1부터 31까지의 날짜를 렌더링합니다.
"dd"01부터 31까지의 날짜입니다.
"ddd"요일의 약식 이름입니다.
"dddd"요일의 전체 이름입니다.
"f"날짜 및 시간 값의 1/10 초입니다.
"ff"날짜 및 시간 값의 1/100 초입니다.
"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 날짜 문자열을 구문 분석 할 때의 현지 시간대입니다.
이름을 배열에 저장하고 해당 월의 색인으로 조회합니다.
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()]);
모멘트를 사용하지 않고 월 이름을 표시하려면-
.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;
}
};
}
I have a partial solution that I came up with. It uses a regular expression to extract the month and day name. But as I look through the Region and Language options (Windows) I realize that different cultures have different format order... maybe a better regular expression pattern could be useful.
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(","));
}
Another way to format date
new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"
For me this is best solution is,
for TypeScript as well
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;
};
Output is
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
Just extending on the many other excellent answers - if you are using jQuery - you could just do something like
$.fn.getMonthName = function(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
];
return monthNames[date.getMonth()];
};
where date
is equal to the var d = new Date(somevalue)
. The primary advantage of this is per @nickf said about avoiding the global namespace.
To get a array of month name :
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/
Just write a simple wrapper around 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));
A quick hack I used which works well:
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);
Keep it simple:
echo date("d M Y");
which will give
31 Aug 2019
참고URL : https://stackoverflow.com/questions/1643320/get-month-name-from-date
'Nice programing' 카테고리의 다른 글
사용자가 입력을 멈출 때까지 .keyup () 핸들러를 지연시키는 방법은 무엇입니까? (0) | 2020.10.02 |
---|---|
Vi에서 전체 파일의 들여 쓰기를 어떻게 수정합니까? (0) | 2020.10.02 |
REST API 오류 반환 우수 사례 (0) | 2020.10.02 |
Git에서 마스터에서 브랜치로 변경 사항 가져 오기 (0) | 2020.10.02 |
디렉토리의 모든 파일과 폴더를 삭제하는 방법은 무엇입니까? (0) | 2020.10.02 |