繁体   English   中英

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

[英]Date Object Javascript creates wrong time while using milliseconds

我遇到了一个有趣的问题。 我正在编写一个小型家庭自动化工具,并将设备信息写入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)

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

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

var date = new Date(lastCheck);

MDN日期时间文档说明得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM