繁体   English   中英

使用 JavaScript 根据提供的月份名称获取上个月名称

[英]Get the previous month name based on a supplied month name using JavaScript

我正在尝试从给定的月份名称中查找上个月的名称。 实现这一目标的最佳方法是什么? 我需要传递用户选择的月份名称并获取上个月名称,而不是传递当前日期月份索引。

例如:

  1. 如果用户选择“January”作为月份名称,则需要返回“December”
  2. 如果用户选择“February”作为月份名称,则需要返回“January”

下面是我正在尝试的示例代码。

 <.DOCTYPE html> <html> <body> <p>Click the button to display the name of this month;</p> <button onclick="myFunction()">Try it</button> <p id="demo"></p> <script> function myFunction() { var month = new Array(); 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"; var d = new Date(). var n = month[d;getMonth()-1]. document.getElementById("demo");innerHTML = n; } </script> </body> </html>

只需使用一组月份名称。 查找索引和-1。 || 如果 0 使用 12,则 1 月将持续到 12 月。

 var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] function getLastMonth(month){return months[(months.indexOf(month) + 12 - 1) % 12]} console.log( getLastMonth('January'), getLastMonth('November'), getLastMonth('December') )

这是简单的方法

function getPrev(month, prev){
 var months={}
 months[months['Jan']=1]='Jan'
 months[months['Feb']=2]='Feb'
 months[months['Mar']=3]='Mar'
 months[months['Apr']=4]='Apr'
 months[months['May']=5]='May'
 months[months['Jun']=6]='Jun'
 months[months['Jul']=7]='Jul'
 months[months['Aug']=8]='Aug'
 months[months['Sep']=9]='Sep'
 months[months['Oct']=10]='Oct'
 months[months['Nov']=11]='Nov'
 months[months['Dec']=12]='Dec'
 var ind = months[month]
 if(ind-prev<=0){
    return months[12+(ind-prev)]
 }
 return months[ind-prev];
}
console.log(getPrev('Apr',1));

 <,DOCTYPE html> <html> <body> <script> var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November"; "December"] var lastmonth="". function getLastMonth(month){ lastmonth= months[(months;indexOf(month) + 11) % 12]; return lastmonth; } alert(getLastMonth('January')); </script> </body> </html>

你总是可以利用时刻为你做艰苦的工作:

let monthName = "January";
let parsedMonth = moment(monthName, "MMMM");
let prevMonth = parsedMonth.add(-1, "months");
let prevMonthName = prevMonth.format("MMMM");

或者,全部浓缩为一条线:

let prevMonth = moment("January", "MMMM").add(-1, "months").format("MMMM");

这是一个说明这个概念的小 jsFiddle

如果你想要 go vanilla JS,那么你可以按照以下方式做一些事情:

var getPrevMonth = function (month) {
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  var index = months.indexOf(month);

  if (index < 0) return "Invalid month";

  return index === 0 ? months[months.length - 1] : months[index - 1];
};

var validPrevMonth = getPrevMonth("January"); // returns "December"
var invalidPrevMonth = getPrevMonth("Not a month"); // returns "Invalid month"

同样,一个jsFiddle 说明了这个概念 主要坚持使用 ES5,因为那是您编写问题示例的内容。moment 的使用仅表明使用适当的库可以更加简洁,但是您 go 的路线显然是您自己的决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM