4

I use my document _id client-side as strings. I would love to be able pull the timestamp from this value as you can on the server. Is it possible to recreate this functionality on the client side? (recast as objectid, or create a standalone function to pull this data)

example _id: "4f94c2a11a6bbec3872cb315"

Thanks!

4

1 に答える 1

9

これはどうですか、ステップに分けて... 残念ながら、ObjectID に保存されるのは 2 回目の解決時間だけです。

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)

テストしたい場合は、jsfiddle を参照してください: http://jsfiddle.net/pZdyM/

: これはちょっと厄介です。現在の ObjectID 形式に依存します。ある日、ObjectID 内でタイムスタンプを移動する可能性があり、これが壊れる可能性があります。

于 2012-04-27T07:14:08.023 に答える