日期对象Javascript在使用毫秒时创建错误的时间

时间:2014-09-05 15:23:22

标签: javascript node.js sqlite date

我遇到了一个有趣的问题。我正在编写一个小型的家庭自动化工具,并将设备信息写入sqlite数据库。

我还将最后一次生命检查保存为字符串'YYYY-MM-DD hh:mm.ms'。

重新启动程序时,我从数据库中读取了值,并希望将它们保存到我的班级中。

所以我从数据库中读取一个带有时间戳的字符串,名为lastLck并解析不同的参数:

var yr1 = parseInt(lastLck.substring(0,4));
var mon1 = parseInt(lastLck.substring(5,7));
var dy1 = parseInt(lastLck.substring(8,10));

var h1 = parseInt(lastLck.substring(11,13));
var m1 = parseInt(lastLck.substring(14,16));
var ms1 = parseInt(lastLck.substring(17,20));

var newDate = new Date(yr1, mon1, dy1, h1, m1, ms1);

但是这不会得到关于毫秒的正确日期时间。我尝试了两个设备,总是得到圆满的时间:

String from database: ++ Compare ++: 2014-08-05 16:40.86
Dump from new Date Object: ++ Compare ++: 2014-08-05 16:41.0
Dump of parameters: ++ Compare ++: 2014-8-5 16:40.86
Dump of newDate.ToLocaleString() ++ Compare ++: Fri Sep 05 2014 16:41:26 GMT+0200 (CEST)

++ Compare ++: 2014-08-05 16:40.101
++ Compare ++: 2014-08-05 16:41.0
++ Compare ++: 2014-8-5 16:40.101
++ Compare ++: Fri Sep 05 2014 16:41:41 GMT+0200 (CEST)

任何人都可以解释这种行为以及如何在我的对象中获得确切的日期吗?+

1 个答案:

答案 0 :(得分:1)

您应该能够简单地将Date的字符串解释传递给Date Constructor:

var date = new Date(lastCheck);

MDN Date Time文档解释得非常好。