我有一个日期,以字符串形式提供,例如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));
答案 0 :(得分: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
出现问题。
答案 1 :(得分: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 );