将日期转换为长格式,它是如何工作的?

时间:2013-10-01 11:08:52

标签: javascript

我试图将日期对象转换为长格式(可能是毫秒格式),就像我们在java中一样 因此,为了满足我的需要,在经过一些试验和错误后,我发现以下方式对我有用:

var date = new Date();  
var longFormat = date*1;  // dont know what it does internally
console.log(longFormat); // output was 1380625095292  

要验证,我使用new Date(longFormat);反转它,它给了我正确的输出。总之,我能够满足我的需求,但是我仍然空白乘法在内部做什么?当我试图将当前日期与数字2相乘时,它给了我一些2057年的日期!有谁知道,究竟发生了什么?

6 个答案:

答案 0 :(得分:3)

长格式在 01.01.1970 之后显示the number of ticks,所以现在大约43年。

*运算符强制参数被强制转换为数字,我想,Date对象可能会使用getTime()进行强制转换。

你加倍的毫秒数 - 你又多了43年,因此是2057年左右。

答案 1 :(得分:2)

乘法时得到的是滴答声

访问: How to convert JavaScript date object into ticks

此外,当你* 2时,你得到了滴答的双倍值,所以日期是未来的

var date = new Date()
var ticks = date.getTime()

<强> ref: Javascript Date Ticks

getTime返回自1970年1月1日以来的毫秒数。因此当你* 1它时,你可能得到这个毫秒的值。当你* 2时,那些毫秒加倍,你的日期为2057 !!

答案 2 :(得分:0)

日期在内部存储为时间戳,这是一个长对象(more info on timestamps)。这就是您可以使用新日期(长)创建日期的原因。如果您尝试将Date与整数相乘,则会发生以下情况:

    var date = new Date();
    var longFormat = date*1;
    // date*1 => date.getTime() * 1

    console.log(longFormat); // output is 1380.....

Javascript尝试找到从日期到格式的最简单转换,该格式可以乘以因子1,在这种情况下是内部长格式

答案 3 :(得分:0)

只需使用日期对象方法。

阅读文档:JavaScript Date object

var miliseconds=yourDateObject.getMiliseconds();

如果你想得到滴答声:

var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);

var ticks = someDate.getTime();

答案 4 :(得分:0)

Javascript日期对象基于UTC time value,自1970年1月1日起为毫秒。恰好,Java使用相同的纪元,但时间值为秒。

要获取时间值,可以使用 getTime 方法,或者可以将数学运算应用于日期对象,例如

var d = new Date();
alert(d.getTime());  // shows time value
alert(+d);           // shows time value

Date构造函数还接受时间值作为参数来创建日期对象,因此要复制日期对象,您可以这样做:

var d2 = new Date(+d);

如果你这样做:

var d3 = new Date(2 * d);

你实际上正在创建一个(非常粗略地)的日期:

1970 + (2013 - 1970) * 2 = 2056

答案 5 :(得分:-1)

您可以尝试parsing functionalityDate constructor,然后您的结果可以stringify

&GT;

 new Date("04/06/13").toString()
"Sun Apr 06 1913 00:00:00 GMT+0200"

//或其他什么 但解析依赖于实现,并且没有很多引擎可以正确解释您的奇数DD / MM / YY格式。如果您使用过MM / DD / YYYY,它可能会在任何地方被识别出来。

相反,您希望确保如何解析它,因此必须自己完成并将单个部分提供给构造函数:

var parts = "04/06/13".split("/"),
    date = new Date(+parts[2]+2000, parts[1]-1, +parts[0]);
console.log(date.toString()); // Tue Jun 04 2013 00:00:00 GMT+0200