1

我有一个以字符串形式提供的日期,例如 09/12/2012。

如果字符串是今天,我希望显示“今天”,否则我希望显示 09/12/2012。

下面显示的我的方法的问题是像 09 这样的月份被解析为 0 而不是 9。

做这个的最好方式是什么?谢谢

var currentDate = new Date();
dateText='09/12/2012';
var a=dateText.split('/');// mdY
$("#date").text(((parseInt(a[0])-1==currentDate.getMonth()&&parseInt(a[1])==currentDate.getDate()&&parseInt(a[2])==currentDate.getFullYear())?'Today':dateText));
4

2 回答 2

5

将第二个参数传递给parseInt()- 具体来说,10。

$("#date").text(((parseInt(a[0], 10)-1==currentDate.getMonth()&&parseInt(a[1], 10)==currentDate.getDate()&&parseInt(a[2], 10)==currentDate.getFullYear())?'Today':dateText));

第二个参数告诉函数用于解释表达式的基数。如果您不明确传递它,它将使用旧的 C 约定,这将导致以零开头的数字被解释为以 8 为基数的常量。这会导致08和的问题09

于 2012-09-02T13:52:48.087 回答
2

这是一个小提琴:http: //jsfiddle.net/pfHA7/1/

function today()
{
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!

    var yyyy = today.getFullYear();
    if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} var today = mm+'/'+dd+'/'+yyyy;
    return today;
}

var dateText = '09/12/2012';

$("#date").text( today() == dateText ? 'Today' : dateText );​
于 2012-09-02T14:04:16.757 回答