2012-09-02 289 views
1

我有一个以字符串形式提供的日期,例如09/12/2012。将JavaScript字符串转换为整数

如果字符串是今天,我希望显示“今日”,否则我希望显示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)); 
+0

你会发现[这里](http://stackoverflow.com/questions/7142123/converting-an-array-of-string-into-integer-using- jquery)如何使用JavaScript和jQuery将字符串转换为Int – VBH

回答

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常量。这会导致0809出现问题。

+0

谢谢Pointy。总体感觉。 – user1032531

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);​