我试图将日期对象转换为长格式(可能是毫秒格式),就像我们在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年的日期!有谁知道,究竟发生了什么?
答案 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)
只需使用日期对象方法。
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 functionality的Date 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