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);