[英]Get the previous month name based on a supplied month name using JavaScript
我正在嘗試從給定的月份名稱中查找上個月的名稱。 實現這一目標的最佳方法是什么? 我需要傳遞用戶選擇的月份名稱並獲取上個月名稱,而不是傳遞當前日期月份索引。
例如:
下面是我正在嘗試的示例代碼。
<.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.