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 

希望这有助于。