Получать все месяцы с года в moment.js
Я хочу получить имя месяца от года в moment.js
если год 2011
, то я хочу, чтобы все месяцы имя в momentjs
Я пробовал этот ниже код, но он не работает для меня.
var xxx = moment().months(2011);
Отображение результата
![enter image description here]()
также я пробовал xxx.months()
, но он возвращает результат 7
но я хочу jan,feb,mar,......dec
. hmm Что я могу сделать?
Ответы
Ответ 1
Для этого существует функция:
moment.monthsShort()
// ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
Или же с помощью форматирования вручную:
Array.apply(0, Array(12)).map(function(_,i){return moment().month(i).format('MMM')})
Я предполагаю, что вы хотите отображать все имена, используя локальные данные Moment.js, что является разумным подходом.
Ответ 2
Используя момент .js у вас есть следующие методы:
moment.month() // long names
возвращает:
[ 'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December' ]
а также
moment.monthsShort() // short names
возвращает:
["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
Ответ 3
если год 2011, то я хочу, чтобы все месяцы имя в momentjs
Почему год? Месячные имена не изменяются.
Вы можете получить месячные имена от Moment следующим образом:
var m = moment();
for (var i = 0; i < 12; i++) {
console.log(m.months(i).format('MMMM'));
}
Ответ 4
/**
* Returns an array of all month names for a given language
* in the specified format.
*
* @param lang {string} Language code
* @param frmt {string} Possible values: {'M','MM','MMM','MMMM'}
* @return the array of month names
*/
function getMonthNames(lang, frmt) {
var userLang = moment.lang(); // Save user language
moment.lang(lang); // Switch to specified language
var months = []; // Months array
var m = moment("2011"); // Create a moment in 2011
for (var i = 0; i < 12; i++) // Loop from 0 to 12 (exclusive)
months.push(m.months(i).format(frmt)); // Append the formatted month
moment.lang(userLang); // Restore user language
return months; // Return the array of months
}
function println(text) {
text = arguments.length > 1 ? [].join.call(arguments, ' ') : text;
document.getElementById('disp').innerHTML += text + '\n';
}
println('English:', getMonthNames('en-US', 'MMM'));
println('Bengali:', getMonthNames('bn', 'MMM'));
println('Español:', getMonthNames('es', 'MMM'));
#disp {
white-space: pre;
font-family: monospace;
}
<!-- http://cdnjs.com/libraries/moment.js/ -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.min.js"></script>
<div id="disp"></div>
Ответ 5
Вы можете использовать следующую функцию, чтобы получить список дней и месяцев для цели листинга -
var iIndex,
sArrMonths, sMonth;
for(iIndex = 0; iIndex < 12; iIndex++)
{
sMonth = moment.localeData().months(moment([0,iIndex]), "");
sArrMonths.push(sMonth);
}
Здесь вы можете проверить живой пример - Локализованный месяц и список дней недели
Ответ 6
Вам понадобится доступ к месяцам из массива:
var months = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ];
var monthInt = new Date().getMonth();
var monthString = months[monthInt];
Ответ 7
Мне нужен массив с именем месяца и месяцами, чтобы отобразить их в ng-optiosn, поэтому я немного расширил решение Klaster_1.
Array.apply(0, Array(12)).map(
function(_,i){
var elem ={};
elem.id = parseInt(i+1);
elem.name = moment().month(i).format('MMM');
return elem;
}
)
Ответ 8
Это 2019 год, и вы больше не должны использовать moment.js, так как класс vanilla Date()
имеет все, что нам нужно. За исключением этого немного функциональности.
Вот что я использую: Там модуль months
NPM, который имеет все месяцы на разных языках. Это около 991 байта в сжатом виде.
Пример с правильным синтаксисом import
:
import months from 'months'
console.log(months.de)