我需要从json中提取日期:
/Date(1224043200000)/
我saw我能做到:
var date = new Date(parseInt('/Date(1224043200000)/'.substr(6)));
^
|
------------------------------0123456
但substr
如何知道忽略最后的字符?
[)/]
我在mdn搜索过,但找不到记录在案的行为。
答案 0 :(得分:4)
.substr()
返回第6个字符后的所有内容。
但是parseInt()
将解析所有数字字符,直到它到达非数字字符,因此忽略发生在parseInt
如果
parseInt
遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。parseInt
将数字截断为整数值。允许前导和尾随空格。
答案 1 :(得分:2)
试试这个:
var date = new Date(parseInt('/Date(1224043200000)/'. substring(6, indexOf(")")-1 ));
答案 2 :(得分:2)
我会采取另一种方式。 Gaby解释了parseInt,但请注意:parseInt
将带有前导零的整数解释为octals。这可能不适用于您的情况,但IMO,这是一种更安全的方法:
var date = new Date(+('/Date(1224043200000)/'.match(/\d+/)[0]));
首先,'/Date(1224043200000)/'.match(/\d+/)
从数组中提取字符串中的数字:["1224043200000"]
。
然后我们需要这些匹配的第一个元素,因此需要[0]
。
为了安全起见,我将所有这些括在括号中,前面加上+
符号,将匹配的子字符串强制转换为数字:+('/Date(1224043200000)/'.match(/\d+/)[0]) === 1224043200000
这是传递给Date
构造函数,它创建一个日期对象,其"Wed Oct 15 2008 06:00:00 GMT+0200 (Romance Daylight Time)"
为字符串值
为了捕捉任何可能的错误,你可能想要将这个单行分开一点,但这取决于你:)