这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
What's wrong with this javascript date parsing? Why does js hate the number 8?
我有一个包含格式为 YYYY-MM-DD
的日期的对象。
我正在提取各种年、月和日整数,以便将它们发送到不同的API
。
这是我的方法示例,使用 substr()
演示:http://jsfiddle.net/AppSynergy/tELsw/
好的,它有效。哦不!- 它没有 - 不完全是..第 3 个元素有什么问题,4 月 8 日的"08"决定改为 0?
如果我将"08"更改为另一个整数,例如"03",那就没问题了。但是"08"会导致问题。
这个快把我逼疯了——怎么了?
如果你能发现它,你应该得到冰淇淋。
默认情况下
,08
被视为(无效的)八进制文字。
您必须在对 parseInt() 的调用中显式指定基数,以便将此令牌视为十进制(基数 10)数:
$("#debug").append(parseInt(date.substr(5, 2), 10) + " / ");
您需要将
parseInt
与基数/基数一起使用10
,因为前面的0
以八进制表示法转换您的数字。
parseInt(yourNum, 10);
由于这个原因,事实证明,除非您不处理基数10
,否则在使用parseInt
时应始终指定基数。
如果字符串以"0"开头,javascript 会认为基数是八(八进制)。
你需要告诉javascript以10为基数来解析字符串。
$.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 />');
});
相关文章:
- 为什么js事件消失了
- 为什么 JS 不在滚动时调用函数
- 为什么JS RegEx提取多个值(只有一个匹配)
- 为什么JS类内部声明的变量是“未定义的”
- 为什么JS confirm()获胜't当我在确认对话框中点击“取消”时,取消提交操作
- 为什么js函数不会永久更改html代码
- 为什么js会从具有特定格式的Date对象中减去一天
- 对为什么js函数中的相同方法有不同的结果感到困惑
- 这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
- 为什么 js 在像 '{}[0]' 这样的语句中忽略 '{}'
- 为什么JS需要对象/数组存在
- 为什么 js 和 html 代码没有运行搜索查询
- 为什么 JS 中不允许每个函数的“break”
- 为什么 JS 变量未定义
- 为什么 Js 无法从我的 Web 服务目录加载图像文件
- 有人能解释为什么JS正则表达式在这种情况下失败吗
- 为什么JS脚本放在</身体>并且</页眉>被处决
- 为什么JS缩小会将1000转换为1E3
- 为什么JS alert在console.log之前执行,而语句后面有一个循环
- 为什么JS只在页面第一次加载或刷新时加载?