Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';t新日期(毫秒)=(新日期())。设置毫秒(毫秒)_Javascript_Date - Fatal编程技术网

Javascript 为什么';t新日期(毫秒)=(新日期())。设置毫秒(毫秒)

Javascript 为什么';t新日期(毫秒)=(新日期())。设置毫秒(毫秒),javascript,date,Javascript,Date,我想将时间戳转换为日期: status_transitions: { finalized_at: 1557419382, marked_uncollectible_at: null, paid_at: 1557419384, voided_at: null }, 特别是,付费电话:1557419384。但是当我尝试新日期(1557419384)时,我没有得到预期的结果。如果我使用Date.setmillizes(),我会这样做 特别奇怪的是Dat

我想将时间戳转换为日期:

  status_transitions:
   { finalized_at: 1557419382,
     marked_uncollectible_at: null,
     paid_at: 1557419384,
     voided_at: null },    
特别是,
付费电话:1557419384
。但是当我尝试新日期(1557419384)时,我没有得到预期的结果。如果我使用Date.setmillizes(),我会这样做

特别奇怪的是
Date.setmillizes()的输出

const ms=1557419384;
const fromConstructor=新日期(毫秒);
const fromFn=新日期();
常量输出=fromFn.setmillizes(ms);
log(`毫秒:${ms}`);
log(`Output from setmillizes:${squanderoutput}`);
log(`datefromnewdate(ms):${fromConstructor}`);

log(`dateusingsetmillizes(ms):${fromFn}`)考虑文档的
setmillizes()
部分中显示的示例

现在运行这个程序,我得到的值是
1557421875100
。请注意,只有最后三位数字是100。因此,它不会将整个date对象设置为100,而只设置值的毫秒部分。其余部分来自
newdate()
,它是当前基于UTC的时间戳

至于为什么不能从新日期(1557419384)
中获得预期结果,时间戳似乎是以秒为单位,而不是以毫秒为单位。将该值乘以1000,得到一个更合理的值。(通常以整秒表示,这里就是这种情况。)

为什么
setmillizes()
的输出与传入的实际毫秒不同

更仔细地检查文档。有一个“参数: 一个介于0和999之间的数字,表示毫秒。“其描述说明为”如果指定的数字超出预期范围,则日期对象中的日期信息将相应更新。例如,如果指定1005,则秒数将增加1,毫秒数使用5“

所以
newdate()
用当前时间创建一个日期,然后将毫秒值添加到该日期中

为什么从一个数字创建一个新的日期不会产生与
setmillizes()
相同的结果? 我已经阅读了文档,它们似乎暗示这两种方法之间应该没有区别

你要找的是<代码>新日期()。设置时间(毫秒)
创建一个等于
新日期(毫秒)
的对象

当我尝试新日期(1557419384)时,我没有得到预期的结果


正如马特·约翰逊(Matt Johnson)所指出的,这个值似乎是秒而不是毫秒。将其乘以1000。

setmillizes返回“1970年1月1日00:00:00 UTC和更新日期之间的毫秒数”。顺便问一下,您确定时间戳以毫秒为单位吗?如果他们在s,这将更有意义,在这种情况下,你的第一次约会将是2019-05-09T16:29:44.000Z。澄清这一点将是一个很好的开始,那是几秒钟。我觉得很幽默的是,设置毫秒最终是在一个离今天更近的日期上,足够了,所以我甚至没有意识到它大约还有20天。1557419382毫秒大约是18天:P。。。似乎setMillimess只是将毫秒添加到日期。另外,new Date()用当前时间实例化日期对象。因此(new Date()).setmillizes(1557419382)只是在当前日期的基础上增加18天。因为
new Date(…)
返回一个日期对象,该对象本身仅为
===
。同样值得注意的是:即使您声明两个
Date
对象的时间完全相同(例如
var a=new Date(100);var b=new Date(100)
您仍然看不到等价性:
a==b;//false
。因为
Date
是JavaScript中
Object
的子类,两个
Date
只有在引用内存中的同一实例时才是相等的。相反,您应该说
a.getTime()==b.getTime()
非常感谢。我还想添加
(new Date())。setTime()将是等效函数。
var theBigDay = new Date();
theBigDay.setMilliseconds(100);