簡體   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