Date class 转换 Timestamp 错误
Date class converts Timestamp wrong
在我的应用程序中,我正在创建一个实时控制台,我在其中输出消息及其时间戳和内容。根据我的阅读,我在下面使用 Date() class 的方法应该按预期工作,其中时间戳乘以 1000 以获得毫秒数。
我正在记录时间戳以进行调试,并获取类似“1441041070066”的值。当我将它们插入 Epoch/Unix 转换器时,date/time 是正确的。然而,我的代码给我的废话是“22:7:46”,然后 1 分钟后是“20:48:37”。谁能解释一下我在这种情况下做错了什么?
messages.forEach( function (item)
{
var timestamp = item.Timestamp; // /Date(1440823073243)/
var timestamp = timestamp.substring(timestamp.lastIndexOf("(")+1, timestamp.lastIndexOf(")"));
console.log(timestamp);
var source = item.Source;
var type = item.Type;
var contents = item.Contents;
// Get Date/Time in Milliseconds
var date = new Date(timestamp * 1000);
var time = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
console_log("<font color='blue'>" + time + "</font>" + ": " + contents);
});
您获得的时间戳已经 in 毫秒。我不知道你使用的是哪个转换器,但是如果你将 1440823073243 放入 epochconverter.com,它会显示:
Assuming that this timestamp is in milliseconds
... 并得出时间戳 GMT: Sat, 29 Aug 2015 04:37:53 GMT
.
所以基本上你应该删除代码的 * 1000
部分,但是将 timestamp
(仍然是一个字符串)解析为一个数字:
var date = new Date(parseInt(timestamp));
此外,您应该使用其他方式来格式化日期:
- 您当前使用的是用户的时区;目前尚不清楚这是否是您想要的。 (很可能是,但你应该考虑一下。)
- 通过仅使用字符串连接,您不会得到任何填充,从而导致像“22:7:46”这样的字符串。
基本上,研究替代格式选项 - 无论是作为 Javascript 标准库的一部分,还是与 moment.js
.
之类的东西一起使用
在我的应用程序中,我正在创建一个实时控制台,我在其中输出消息及其时间戳和内容。根据我的阅读,我在下面使用 Date() class 的方法应该按预期工作,其中时间戳乘以 1000 以获得毫秒数。
我正在记录时间戳以进行调试,并获取类似“1441041070066”的值。当我将它们插入 Epoch/Unix 转换器时,date/time 是正确的。然而,我的代码给我的废话是“22:7:46”,然后 1 分钟后是“20:48:37”。谁能解释一下我在这种情况下做错了什么?
messages.forEach( function (item)
{
var timestamp = item.Timestamp; // /Date(1440823073243)/
var timestamp = timestamp.substring(timestamp.lastIndexOf("(")+1, timestamp.lastIndexOf(")"));
console.log(timestamp);
var source = item.Source;
var type = item.Type;
var contents = item.Contents;
// Get Date/Time in Milliseconds
var date = new Date(timestamp * 1000);
var time = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
console_log("<font color='blue'>" + time + "</font>" + ": " + contents);
});
您获得的时间戳已经 in 毫秒。我不知道你使用的是哪个转换器,但是如果你将 1440823073243 放入 epochconverter.com,它会显示:
Assuming that this timestamp is in milliseconds
... 并得出时间戳 GMT: Sat, 29 Aug 2015 04:37:53 GMT
.
所以基本上你应该删除代码的 * 1000
部分,但是将 timestamp
(仍然是一个字符串)解析为一个数字:
var date = new Date(parseInt(timestamp));
此外,您应该使用其他方式来格式化日期:
- 您当前使用的是用户的时区;目前尚不清楚这是否是您想要的。 (很可能是,但你应该考虑一下。)
- 通过仅使用字符串连接,您不会得到任何填充,从而导致像“22:7:46”这样的字符串。
基本上,研究替代格式选项 - 无论是作为 Javascript 标准库的一部分,还是与 moment.js
.