unix时间戳作为NumberLong(1385297660000000000)
存储在数据库(mongodb)中。检索时间戳时,Chrome的开发者控制台会将其显示为:
timestamp: Object
_bsontype: "Long"
high_: 322539745
low_: -2018573312
如何检索原始的unix时间戳?
答案 0 :(得分:2)
您也可以使用这种快捷方式:
longToDate = function(longValue) {
var high = longValue._bsontype.high_;
var low = longValue._bsontype.low_;
return new Date(((high >>> 0) * Math.pow(16,8) + (low >>> 0))/Math.pow(10,6))
}
然后只需使用它,例如timestamp
longToDate(timestamp)
=> Sun, 24 Nov 2013 12:54:18 GMT
答案 1 :(得分:0)
感觉有点矫枉过正,但这很有效:
Long.min.js
放入Meteor项目的/lib
文件夹中,以便客户端和服务器都可以使用Long对象(如果需要;否则将其放在/client/lib
或{{1}中(视情况而定)(参见工作示例here)
/server/lib
因此,如果您真的想要Unix时间戳,请参阅上面的var Long, value, unixTimestamp, jsTimestamp, date;
Long = dcodeIO.Long;
value = new Long(-2018573312, 322539745).toNumber();
// 1385297658711573500, almost the original 1385297660000000000
// Unix timestamps are in seconds, so lop off the last 9 digits
unixTimestamp = Math.round(value / 1000000000);
// 1385297659
// JavaScript timestamps are in milliseconds, so lop off the last 6 digits
jsTimestamp = Math.round(value / 1000000);
// 1385297658712
// Create Date object (if desired)
date = new Date(jsTimestamp);
// Sun Nov 24 2013 07:54:18 GMT-0500 (EST)
变量;或者我假设您可能更喜欢JavaScript unixTimestamp
对象,在这种情况下使用上面的Date()
变量。您需要做的就是将时间戳对象的低值和高值放到我在此代码中放置date
和-2018573312
的位置。请注意,时间戳都不等于原始的138529766 Unix时间戳;进出Long数字类型会丢失一些精度。