Javascript 如何从数据对象中提取字符并返回新字符

Javascript 如何从数据对象中提取字符并返回新字符,javascript,Javascript,我想把这个1332251639632变成这个1332251639 我尝试了这段代码,但因为它不是字符串,所以不起作用 var date = new Date(); var t = date.getTime(); var p = t.substring(10); alert(p); 我想剪掉它,因为在phptime()中返回10位数字像这样 var p = parseInt(t/1000); 尝试: 您可以使用Ilia建议的解决方案进行舍入,或者使用如下子字符串: var date = ne

我想把这个1332251639632变成这个1332251639

我尝试了这段代码,但因为它不是字符串,所以不起作用

var date = new Date();
var t = date.getTime();
var p = t.substring(10);

alert(p);
我想剪掉它,因为在phptime()中返回10位数字

像这样

var p = parseInt(t/1000);
尝试:


您可以使用Ilia建议的解决方案进行舍入,或者使用如下子字符串:

var date = new Date();
var t = date.getTime().toString();
var p = t.substring(0, 10);

alert(p);
这个怎么样

var date = new Date();
var t = date.getTime();
var p = parseInt(t.toString().match(/\d{10}/));

alert(p);

它将数字转换为字符串,匹配前10位数字,然后将结果重新转换为数字

我想知道这两种方法是否有区别

var p = parseInt(t/1000);

我这样做:

 start = new Date().getTime(); for ( var i=0; i<1000000; i++) parseInt(start/1000); new Date().getTime() - start;

start=newdate().getTime();对于(var i=0;i我认为更好的方法是:

var dateObject = new Date(),
    time = dateObject.getTime();
Math.floor ( time / 1000 );
现在的原因是:

  • parseInt()预期字符串将被某个基数转换。在幕后,解释器正在处理字符串,并在最后返回整数。该函数的工作原理示例。由于将在未来版本的浏览器中实现字符串和基数.ES5的额外工作,因此速度较慢l强制使用基数,原因如下:

    parseInt(“011”);//返回9,0起始字符串表示八进制数

    parseInt(“011”,10);//按预期返回11

  • getTime()将返回一个数字,从1970年1月1日00:00:00 UTC开始以毫秒为单位,没有从字符串到数字的转换。这意味着“语义上”最好使用舍入函数

  • 楼层(x)用于处理数字。返回不大于x的最大数字值。用法
  • ceil(x)几乎相同-返回不小于x的最小数值。用法

  • 稍微离题一点也不会有任何区别,因为数字是64位的,Javascript中的整数是53位的。

    使用toString()会更简洁而不是用空引号进行隐式类型转换。@Travis J您真的应该读取-从这个位置使用一个参数表示,而不是长度。@Bakudan-已经读取了,但只是使用了OP的示例。它应该正确读取
    t.substring(0,10);
    @DanPrince-更干净,但速度更慢。@Travis J和它在遇到错误时为您节省的时间可能会大大超过两者之间的微小时间差;)正则表达式是无用的,因为它将返回数字。这就是为什么我首先转换为字符串:)那么为什么不
    (''+date.getTime()).substring(0,10)?在
    数字上使用
    parsInt
    是否比仅使用
    Math.floor(t/1000)
    有任何(dis)优势?@Chris Wesseling数字是基本类型。数字是一个包装器-它将创建一个数字对象。@Bakudan OK,我不知道。与使用
    Math.floor
    相比,在执行
    parseInt
    时,v8引擎的性能似乎受到了轻微的影响。请参阅my.See-parseInt函数正在使用字符串,在幕后还有很多工作要做。ECMA规范中显示了实现,这是一个很大的区别。我不认为会有舍入。在JavaScript中,整数足够大。整个代码片段可以缩短:
    alert(+newdate());​
    
     start = new Date().getTime(); for ( var i=0; i<1000000; i++) parseInt(start/1000); new Date().getTime() - start;
    
    start = new Date().getTime(); for ( var i=0; i<1000000; i++) Math.floor(start/1000); new Date().getTime() - start;
    
    var dateObject = new Date(),
        time = dateObject.getTime();
    Math.floor ( time / 1000 );