在我的应用程序中,我正在创建一个实时控制台,在其中输出带有时间戳和内容的消息。根据我的阅读,我在下面使用Date()类的方法应该按预期工作,其中时间戳乘以1000得到毫秒。
我正在记录时间戳以进行调试,并获得类似" 1441041070066"的值。当我将它们插入Epoch / Unix转换器时,日期/时间是正确的。然而,我的代码正在给我的废话,如#34; 22:7:46"然后1分钟后#34; 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);
});
答案 0 :(得分:2)
您获得的时间戳已经 毫秒。我不知道您使用的是哪个转换器,但如果您将1440823073243放入epochconverter.com,则会显示:
假设此时间戳以毫秒为单位
...并提供GMT: Sat, 29 Aug 2015 04:37:53 GMT
的时间戳。
所以基本上你应该删除代码的* 1000
部分,但是将timestamp
(仍然是一个字符串)解析成一个数字:
var date = new Date(parseInt(timestamp));
此外,您应该使用其他方式格式化日期:
基本上,研究替代格式化选项 - 无论是作为Javascript标准库的一部分,还是像moment.js
那样。