Javascript 从客户端的mongo_id中提取日期

Javascript 从客户端的mongo_id中提取日期,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我使用我的文档\u id客户端作为字符串。我希望能够像在服务器上一样从这个值中提取时间戳。是否可以在客户端重新创建此功能?(重铸为objectid,或创建一个独立函数来提取此数据) 示例\u id:“4f94c2a11a6bbec3872cb315” 谢谢 这个怎么样,分解成步骤。。。不幸的是,这只是存储在ObjectID中的第二次解析时间 var id = "4f94c2a11a6bbec3872cb315"​; // first 4 bytes are the timestamp porti

我使用我的文档
\u id
客户端作为字符串。我希望能够像在服务器上一样从这个值中提取时间戳。是否可以在客户端重新创建此功能?(重铸为objectid,或创建一个独立函数来提取此数据)

示例
\u id:“4f94c2a11a6bbec3872cb315”


谢谢

这个怎么样,分解成步骤。。。不幸的是,这只是存储在ObjectID中的第二次解析时间

var id = "4f94c2a11a6bbec3872cb315"​;
// first 4 bytes are the timestamp portion (8 hex chars)
var timehex = id.sub​string(0,8);
console.log(timehex); // gives: 4f94c2a1

// convert to a number... base 16
var secondsSinceEpoch = parseInt(timehex, 16);
console.log(secondsSinceEpoch); // gives: 1335149217

// convert to milliseconds, and create a new date
var dt = new Date(secondsSinceEpoch*1000);
console.log(dt);​ // gives: Sun Apr 22 2012 22:46:57 GMT-0400 (EDT)
如果要测试,请参阅JSFIDLE:


注意:这有点笨拙——它取决于当前的ObjectID格式。有一天,他们可能会在ObjectID中移动时间戳,这将打破这一局面。

很酷,这是一个很好的开始,我知道时间十六进制现在位于何处:)--我想知道是否有办法证明这一点,可能只是需要知道我正在运行的东西的版本以及十六进制是如何存储的。他们正在讨论将时间移到比最左边的字节更不重要的地方,以便使ObjectID更好地作为切分键。但看起来他们会尝试做其他事情,比如这样:所以可能比我想象的更安全。