7

我试图将日期对象转换为长格式(可能是毫秒格式),就像我们在 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 年的某个日期!有谁知道,到底发生了什么?

4

6 回答 6

11

长格式显示01.01.1970之后的刻度数,因此现在大约 43 年。

*运算符强制参数转换为数字,我想,Date对象可能有这样的转换getTime()

您将毫秒数加倍 - 您将获得 43 年,因此是 2057 年(左右)。

于 2013-10-01T11:15:41.120 回答
5

当你乘法时,你得到的是滴答声

访问:如何将 JavaScript 日期对象转换为刻度

此外,当你* 2这样做时,你会得到双倍的刻度值,所以日期是未来的

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

参考:Javascript 日期刻度

getTime返回自 1970 年 1 月 1 日以来的毫秒数。所以当你* 1这样做时,你可能已经得到了这个毫秒的值。当您* 2执行此操作时,这些毫秒数加倍,您将获得 2057 年的日期!!

于 2013-10-01T11:11:51.400 回答
0

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

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

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

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

于 2013-10-01T11:13:16.833 回答
0

只需使用日期对象方法。

阅读文档:JavaScript Date 对象

var miliseconds=yourDateObject.getMiliseconds();

如果你想得到蜱:

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

或者

var ticks = someDate.getTime();
于 2013-10-01T11:18:04.350 回答
0

Javascript 日期对象基于 UTC时间值,即自 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
于 2013-10-01T11:26:25.617 回答
-1

您可以尝试Date 构造函数的解析功能,然后您可以对其结果进行字符串化

>

 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
于 2013-10-01T11:11:26.043 回答