JavaScript Date()返回错误的时间

时间:2018-02-01 09:32:41

标签: javascript date

我的简单测试:

var ds = "2018/2/28 15:59";
console.log(ds);
var da = Date(ds);
console.log(da);
ds = "2018-2-28 15:59";
console.log(ds);
var da = Date(ds);
console.log(da);

结果

2018/2/28 15:59  
Thu Feb 01 2018 17:26:57 GMT+0800 (+08)  
2018-2-28 15:59  
Thu Feb 01 2018 17:26:57 GMT+0800 (+08)  

即使时间“2018/2/28 15:59”处于不同的时区,但仍然非常令人费解,因为分钟和秒数不同:59:00与26:57。时区差异是30分钟的倍数。

4 个答案:

答案 0 :(得分:6)

您忘记在new之前添加Date()

这意味着您只是调用一个名为Date()的函数,该函数(默认情况下)会重新调整当前日期和时间。

var ds = "2018/2/28 15:59";
console.log(ds);
var da = new Date(ds);
console.log(da);
ds = "2018-2-28 15:59";
console.log(ds);
var da = new Date(ds);
console.log(da);

AuxTacos的补充回答,正确的init方式。你的约会对象:

var da = new Date(2018, (2-1), 28, 15, 59); // x-1 because 0=Jan,1=Feb...
console.log(date);

答案 1 :(得分:3)

zeropublix's answer(您忘记了new)外,您的日期字符串无效。 proper编码方式"午夜过去15小时59分钟,标志着公元2018年2月28日的开始和#34;是"2018-02-28T15:59Z"。您的系统(和我的系统)可能会将"2018/2/28 15:59"识别为有效的日期字符串,但该实现依赖且容易出现故障。规范中唯一识别的格式是a simplification of ISO 8601

答案 2 :(得分:-1)

我试试这个。

var ds = "2018/2/28 15:59"; 
var da = new Date(ds);

它给我日期2018-02-28T15:59:00.000Z。我得到了合适的时间和日期。

答案 3 :(得分:-1)

var da = Date(ds); 这里Date即使您传递参数也会给出当前时间。

试试这个。

var ds = "2018/2/28 15:59"; var da = new Date(ds);

给出2018-02-28T10:29:00.000Z