簡體   English   中英

JavaScript顯示/計算過去3個月

[英]Javascript display/calculate past 3 months

我有一個函數,可以計算出過去三個月的時間,並使用數組顯示名稱。

我剛剛意識到,新的一年即將來臨,對於1月,2月和3月,將無法獲得正確的月份。

我希望能夠做到這一點而不必添加hack(這是我見過的唯一方法)

function getMonths()
    {
        var today = new Date();             
        var month = 0;
        var currMonth = month-3;

        var monthArray = new Array("January","February","March","April","May","June",
                "July","August","September","October","November","December");

        var menuMonths = new Array();
        var count = 4;
        var buffer = 10;

        while(count >0)
        {           
            var month = monthArray[currMonth];
            alert(currMonth);
            menuMonths.push(month);

            currMonth = currMonth +1;
            count = count -1;
        }       
        return menuMonths;
    }   

Modulus是您的朋友。 嘗試:

function getMonths()
{
    var today = new Date();             
    var month = 1;

    var monthArray = new Array("January","February","March","April","May","June",
            "July","August","September","October","November","December");

    var menuMonths = new Array();

    for(var count = 3; count >= 0; count--)
        menuMonths.push(monthArray[((12 + month - count) % 12)]);

    return menuMonths;
}

alert(getMonths());

這一點除了你的while循環將確保currMonth一直是你的一個有效指標monthArray

 while(count >0)
    {           
        if (currMonth < 0)
            currMonth += 12;
        if (currMonth >=12 )
            currMonth -= 12;

        var month = monthArray[currMonth];
        menuMonths.push(month);

        currMonth = currMonth +1;
        count = count -1;
    }       

工作示例: http : //jsfiddle.net/RWhN4/
這有點駭人聽聞,但它應該做您想要的。

我做了與你們類似的事情,但基本上是在過去十二個月中做到的,我使用的是以下格式的格式:

$(".monthly_usage").val('');
    var monthArray = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var today = new Date();

    var month = today.getMonth();
    var year = today.getFullYear();
    var output = "Enter Trailing Twelve Months Usage<br/><center><table border=1 cellpadding=10 cellspacing=0><thead><th>Month - Year</th><th>Usage</th></thead><tbody>";
    for(var i = 0; i < 12; i++) {
        output += "<tr><td>" + monthArray[today.getMonth()] + " " + year + "</td><td><input type=text class=monthly_usage name=usage[]></td></tr>";
        var month = today.setMonth(today.getMonth() - 1);
        var year = today.getFullYear(); 
    }
    output += "</tbody></table>"+
    "<button id=submit_ttm>Submit Monthly Usage</button></center>";
    return output;

要確定哪個月是3個月前,您可以執行以下操作:

var d = new Date();
d.setMonth(d.getMonth() - 3);
var monthIndex = d.getMonth() //(0-11)

讓標准的javascript方法為您進行計算。

這是您的函數更新為使用javascript方法為您進行計算:

function getMonths() {
    var date = new Date();

    //subttract 3 months
    date.setMonth(0 - 3);

    var monthArray = new Array("January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December");

    var menuMonths = new Array();
    var count = 4;
    var buffer = 10;

    while (count > 0) {
        var month = monthArray[date.getMonth()];

        alert(month);

        menuMonths.push(month);

        date.setMonth(date.getMonth() + 1);

        count -= 1;
    }
    return menuMonths;
}
function lastMonths(count,month,order) {
    var arr = [];
    //defaults
    month = typeof month !== 'undefined' ? month : new Date().getMonth();
    count = typeof count !== 'undefined' ? count : 3;
    order = typeof order !== 'undefined' ? order : "asc";

    while (count-- > 0) {
        month = (--month < 0) ? 11 : month;
        arr.push(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][month]);
    }
    return ( order === "asc" ) ? arr.reverse() : arr;
}

該功能具有默認的顯示月份數,開始月份和訂單演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM