【问题标题】:How to get previous month (DECEMBER) name如何获得上个月(十二月)的名称
【发布时间】:2017-01-03 12:35:27
【问题描述】:

如何在jQuery中获取上个月的名字?它不适用于 12 月月。

var now = new Date();
var currentYear = (new Date).getFullYear();
var currentMonth = GetMonthName((new Date).getMonth());
var lastMonth = GetMonthName((now.getMonth() - 1));

function GetMonthName(monthNumber) {
    var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    return months[monthNumber];
}

我在我的代码中尝试了一些不同的东西,但没有运气。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    只是另一种方法:

    function GetMonthName(monthNumber) {
      var months = ['December', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      return months[++monthNumber];
    }
    
    console.log(GetMonthName(-1));
    console.log(GetMonthName(0));
    console.log(GetMonthName(11));

    甚至更简单:

    function GetMonthName(monthNumber) {
      var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      return months[monthNumber] || 'December';
    }
    
    console.log(GetMonthName(-1));
    console.log(GetMonthName(0));
    console.log(GetMonthName(11));

    或者使用Array的slice方法:

    function GetMonthName(monthNumber) {
      var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      return months.slice(monthNumber)[0];
    }
    
    console.log(GetMonthName(-1));
    console.log(GetMonthName(0));
    console.log(GetMonthName(11));

    【讨论】:

      【解决方案2】:

      对于之前的任何一个月,这都应该有效:

      function GetMonthName(monthNumber) {
        monthNumber = monthNumber < 0 ? 11 : monthNumber;
        var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
        return months[monthNumber];
      }
      

      【讨论】:

      • OP 使用 (new Date).getMonth() 所以是基于 ECMAScript 月数,而这个答案依赖于日历月数,没有解释差异。
      【解决方案3】:

      上个月可以试试这个:jsfiddle.net/bharatsing/jc3gpwfn/

      var now = new Date();
      var currentYear = (new Date).getFullYear();
      var currentMonth = GetMonthName((new Date).getMonth());
      
      var newdate=new Date(now.setMonth(now.getMonth() - 1));
      var lastMonth = GetMonthName((newdate.getMonth()));
      alert(lastMonth);
      function GetMonthName(monthNumber) {
          var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
          return months[monthNumber];
      }
      

      【讨论】:

        【解决方案4】:
        var lastMonth = GetMonthName((now.getMonth() - 1));
        if(lastMonth < 0) lastMonth = 11;
        

        【讨论】:

          【解决方案5】:

          这是 2021 年的版本

          const getPrevMonthName = d => {
            const prevMonth = new Date(d); prevMonth.setMonth(prevMonth.getMonth()-1);
            return new Intl.DateTimeFormat("en-GB",{month: "long"}).format(prevMonth)
          };
          
          console.log(
            getPrevMonthName(new Date())
          )  

          如果你有一个命名月份和一个monthNames数组,你可以使用模

          const fmt = new Intl.DateTimeFormat("en-GB", { month: "long" }).format;
          const mArr = [...Array(12).keys()].map(m => fmt(new Date(2021, m, 1, 15, 0, 0, 0)))
          const getPrevMonthName = monthName => {
            return mArr[(mArr.indexOf(monthName) + mArr.length - 1) % mArr.length];
          }
          console.log(
            getPrevMonthName("January"),
            getPrevMonthName("December")
          )

          【讨论】:

            【解决方案6】:

            任何语言的月份名称都可以使用 toLocaleString 找到适当的语言(例如,'en' 表示英语)和月份选项 {month: 'long'}

            基于 OP 代码:

            // Given a date, return the month name for the given language
            // Default is English
            function getMonthName(date, lang = 'en') {
              return date.toLocaleString(lang,{month:'long'});
            }
            
            var now = new Date();
            var currentYear = now.getFullYear();
            var currentMonth = getMonthName(now);
            var lastMonth = getMonthName(new Date(currentYear, now.getMonth() - 1));
            
            // For current month
            console.log(`currentMonth: ${currentMonth}\nlastMonth   : ${lastMonth}`);
            
            // For January
            let d = new Date(2021,0);
            console.log(`currentMonth: ${getMonthName(d)}\nlastMonth   : ${getMonthName(new Date(d.getFullYear(), d.getMonth() - 1))}`);

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-10-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-06-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多