首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个javascript日期解析有什么问题?为什么js讨厌数字8?

这个javascript日期解析有什么问题?为什么js讨厌数字8?
EN

Stack Overflow用户
提问于 2012-06-25 09:34:55
回答 3查看 415关注 0票数 3

我有一个包含YYYY-MM-DD格式日期的对象。

我正在提取不同的年份、月和日整数,以便将它们发送到不同的API

下面是我的方法的一个例子,使用substr()

演示: http://jsfiddle.net/AppSynergy/tELsw/

好吧,起作用了。哦,不!-不-不太..。第三个元素有什么问题,4月8日的"08“决定为0?

如果我将"08“改为另一个整数,例如"03",就可以了。但是"08“引起了问题。

这件事快把我逼疯了-怎么了?

如果你能认出它,你就该吃冰淇淋。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-25 09:37:48

默认情况下,08被视为(无效) octal文本。

您必须在调用parseInt()中显式指定基数,以便将此令牌视为十进制(基数10)数字:

代码语言:javascript
复制
$("#debug").append(parseInt(date.substr(5, 2), 10) + " / ");
票数 7
EN

Stack Overflow用户

发布于 2012-06-25 09:36:47

您需要将parseInt10的基/基结合使用,因为前面的0用八进制符号来转换数字。

代码语言:javascript
复制
parseInt(yourNum, 10);

由于这个原因,除非您没有使用基本的parseInt编号,否则在使用10时应该始终指定基。

票数 3
EN

Stack Overflow用户

发布于 2012-06-25 09:36:47

如果字符串以"0“开头,javascript将认为基数为8(八进制)。

您需要告诉javascript解析字符串的基数为10。

代码语言:javascript
复制
$.each(testData, function(i, val) {
    // sort out the date format
    var date = val.trim();
    $('#debug').append(date+' ==><br />');
    $('#debug').append(parseInt(date.substr(0, 4), 10)+' / ');
    $('#debug').append(parseInt(date.substr(5, 2), 10)+' / ');
    $('#debug').append(parseInt(date.substr(8, 2), 10)+'<br /><br />');
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11186751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档