javascript相似日期对象,返回不同的时代?
问题描述:
当我使用不同的日期构造函数我收到类似的日期对象,但是当我到达那里时代值他们有稍微不同的值。 它是一个错误或东西,或者我只是将错误的值格式传入构造函数?javascript相似日期对象,返回不同的时代?
> date1 = new Date();
Sun Oct 04 2015 15:31:33 GMT+0330 (IRST)
> date2 = new Date(date1.toString());
Sun Oct 04 2015 15:31:33 GMT+0330 (IRST)
> date3 = new Date(date1.toISOString());
Sun Oct 04 2015 15:31:33 GMT+0330 (IRST)
> date1.getTime();
1443960093117
> date2.getTime();
1443960093000
> date3.getTime();
1443960093117
我在Ubuntu 14.04.1使用节点(v0.12.2)。
答
ISO日期格式包含一个字段来表示秒的小数部分。默认日期格式不会,并且在解析默认日期格式时,系统会假定第二个值是确切的。
> new Date().toString()
'Sun Oct 04 2015 07:53:48 GMT-0500 (CDT)'
> new Date().toISOString()
'2015-10-04T12:53:58.769Z'
在ISO字符串中,.769
是秒部分。
答
显然date1 .toString()
不走毫秒的考虑而date1 .toISOString()
一样。是的,这不是一个错误,你只是传递不同的字符串。对我来说:
var date1 = new Date();
console.log(date1.toString(), date1.toISOString())
// Sun Oct 04 2015 14:54:37 GMT+0200
// 2015-10-04T12:54:37.113Z
答
当你只需登录它会自动使用其丢弃毫秒的默认方法的ToString()版本的日期。使用下面的代码,你可以看到。### Z被放弃.toString(),但不是.toISOString(),因为它是扩展的ISO格式。
var date1 = new Date();
var date2 = new Date(date1.toString());
var date3 = new Date(date1.toISOString());
console.log('date1 ' + date1.toISOString());
console.log('date2 ' + date2.toISOString());
console.log('date3 ' + date3.toISOString());
console.log('date1 ' + date1.getTime());
console.log('date2 ' + date2.getTime());
console.log('date3 ' + date3.getTime());
它返回
date1 2015-10-04T13:34:37.778Z
date2 2015-10-04T13:34:37.000Z
date3 2015-10-04T13:34:37.778Z
date1 1443965677778
date2 1443965677000
date3 1443965677778
希望这有助于。