【问题标题】:Date extension javascript get month name日期扩展javascript获取月份名称
【发布时间】:2017-05-26 08:00:43
【问题描述】:

我正在努力对日期对象进行扩展以返回当前月份的名称。如果方法 d.getMonthText() 被调用,它应该返回(一月)。

我已经在网上搜索过扩展程序,但我似乎无法弄清楚。

【问题讨论】:

    标签: javascript date extension-methods


    【解决方案1】:

    虽然不推荐,但您可以通过其原型属性向几乎任何 javascript 内置对象添加方法。

    Date.prototype.getMonthName = function() {
        let months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];
    
        return months[this.getMonth()];
    };
    

    那就用吧:

    let date = new Date();
    let month = date.getMonthName();
    

    【讨论】:

    • 哇,我们的答案超级相似
    【解决方案2】:

    只需将date.getMonth() 方法值映射到月份值

    Date.prototype.getMonthText = function() {
      var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      return months[this.getMonth()];
    }
    
    var now = new Date();
    var month = now.getMonthText();
    console.log(month);

    【讨论】:

      【解决方案3】:

      这是一个非常基本的方法。这个函数将返回月份的名称

      <script>
      function getMonthText(){
      var month;
       switch (new Date().getMonth()) {
         case 0:
           month= "Jan";
           break;
         case 1:
           month= "Feb";
           break;
         case 2:
           month= "March";
           break;
         case 3:
           month= "April";
           break;
         case 4:
           month= "May";
           break;
         case 5:
           month= "June";
           break;
         case  6:
           month= "July";
           break;
         case  7:
           month= "August";
           break;
         case  8:
           month= "Sep";
           break;
         case  9:
           month= "Oct";
           break;
         case  10:
           month= "Nov";
           break;
         case  11:
           month= "Dec";
           break;
      }}
       </script>
      

      【讨论】:

        【解决方案4】:

        只是为了添加一个选项,您可以考虑 toLocaleString,它应该支持 ECMA 402 国际化 API。它尚未普及,但值得考虑,因为它将使用 ISO 639-1 语言代码以任何语言返回月份名称:

        Date.prototype.getMonthName = function(lang) {
          // Default language is English
          lang = lang || 'en-GB';
          return this.toLocaleString(lang, {month:'long'});
        }
        
        console.log(new Date().getMonthName())        // English (default)
        
        console.log(new Date().getMonthName('ar-sy')) // Arabic
        
        console.log(new Date().getMonthName('es-py')) // Spanish

        【讨论】:

          【解决方案5】:

          ECMAScript 6 版本:

          getPreviousMonth(monthBefore) {
              let monthList = [];
              let date = new Date();
              for (let i = 0; i < monthBefore; i++) {
                  date.setMonth(date.getMonth() - 1);
                  monthList.push(date.toLocaleString('en-us', {
                      month: 'long',
                  }));
              }
              return monthList;
          }
          

          【讨论】:

            【解决方案6】:

            您可以对 Date 原型对象进行猴子修补并实现扩展方法:

            Date.prototype.getMonthName = function() {
              return "January,February,March,April,May,June,July,August,September,October,November,December".split(",")[this.getMonth()];
            }

            【讨论】:

              猜你喜欢
              • 2010-12-11
              • 2021-08-21
              • 1970-01-01
              • 2020-06-17
              • 2011-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多