显示正确的日期后缀

时间:2014-12-08 04:24:59

标签: javascript

我试图修复this widgetdownload),因为它说日期是每个月的01,02,03日,我不能因为我的生活解决了为什么它不起作用。我没有任何JS经验,但我对C#非常称职,所以语法太难理解了。

我意识到这条线是罪魁祸首:

document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "TH";

我尝试用此代码替换它(我知道它在11日,12日和13日不正确),但它仍然失败:

if (dateFC % 10 == 1)
{
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "ST";
}
else if (dateFC % 10 == 2)
{
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "ND";
}
else if (dateFC % 10 == 3)
{
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "RD";
}
else
{
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "TH";
}

据我所知,语法是正确的所以我只能假设我没有错误地应用我的模数运算符(在C#中我猜它会将数字存储为字符串这就是它失败的原因,但我不知道这是否适用于此。如果有人能指出我正确的方向,我会非常感激!提前谢谢。

1 个答案:

答案 0 :(得分:1)

//没有多少地方可以使用switch语句,但这只是其中之一。

function nth(n){
    if(n%1) return n;
    var n1= n%100;
    if(n1>3 && n1<21) return n+'th';
    switch(n1%10){
        case 1: return n+'st';
        case 2: return n+'nd';
        case 3: return n+'rd';
        default: return n+'th';
    }
}
var A= [];
for(var i= 1; i<32; i++)A.push(nth(i));

A.join(', ');

//返回值:

1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th, 11th, 12th, 13th, 
14th, 15th, 16th, 17th, 18th, 19th, 20th, 21st, 22nd, 23rd, 24th, 
25th, 26th, 27th, 28th, 29th, 30th, 31st