簡體   English   中英

在 moment.js 中獲取所有月份的名稱

[英]Get all months name from year in moment.js

我想在 moment.js 中獲取所有月份的名稱

如果年份是2011 ,那么我想在 momentjs 中命名所有月份

我在下面的代碼中嘗試過這個,但它對我不起作用。

var xxx = moment().months(2011);

顯示結果是

在此處輸入圖片說明

我也試過xxx.months() ,但它的返回結果是7

但我想要jan,feb,mar,......dec 嗯我能做什么?

恰好有一個函數:

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 區域設置數據顯示所有名稱,這是一種合理的方法。

使用 moment.js 您有以下方法:

moment.months() // 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"]

如果年份是 2011,那么我想在 momentjs 中命名所有月份

為什么年份很重要? 月份名稱不變。

您可以像這樣從 Moment 獲取月份名稱:

var m = moment();
for (var i = 0; i < 12; i++) {
 console.log(m.months(i).format('MMMM'));
}

 /** * 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>

輸出

English: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
Bengali: জানু,ফেব,মার্চ,এপর,মে,জুন,জুল,অগ,সেপ্ট,অক্টো,নভ,ডিসেম্
Español: ene.,feb.,mar.,abr.,may.,jun.,jul.,ago.,sep.,oct.,nov.,dic.

您可以使用以下函數來獲取工作日和月份的列表以供上市 -

var iIndex, 
sArrMonths, sMonth;
for(iIndex = 0; iIndex < 12; iIndex++)
{
    sMonth = moment.localeData().months(moment([0,iIndex]), "");
    sArrMonths.push(sMonth);
}

您可以在此處查看實時示例 -本地化的月份和工作日列表

您將不得不從數組中訪問月份:

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

var monthInt = new Date().getMonth();
var monthString = months[monthInt];

如果你想在 React 的選擇中列出月份名稱:

  <select
    value={value}
    onChange={handleChange}>

         {moment.months().map(item => (
            <option key={item}>{item}</option>
         ))}

  </select>

我需要一個帶有月數和月名的數組來在 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;
                    }
              )

現在是 2019 年,你不應該再使用 moment.js,因為 vanilla Date()類擁有我們需要的一切。 除了這個小功能。

這是我使用的: months NPM 模塊包含不同語言的所有月份。 壓縮后大約有 991 個字節。

具有正確import語法的示例:

import months from 'months'

console.log(months.de)

結果:

[
  "Januar",
  "Februar",
  "März",
  "April",
  "Mai",
  "Juni",
  "Juli",
  "August",
  "September",
  "Oktober",
  "November",
  "Dezember"
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM