Eval is not necessary. This will work fine:
var date = new Date(parseInt(jsonDate.substr(6)));
The substr function takes out the “/Date(” part, and the parseInt function gets the integer and ignores the “)/” at the end. The resulting number is passed into the Date constructor.
EDIT: I have intentionally left out the radix (the 2nd argument to parseInt); see my comment below. Also, I completely agree with Rory’s comment: ISO-8601 dates are preferred over this old format — so this format generally shouldn’t be used for new development. See the excellent Json.NET library for a great alternative that serializes dates using the ISO-8601 format.
For ISO-8601 formatted JSON dates, just pass the string into the Date constructor:
var date = new Date(jsonDate); //no ugly parsing needed; full timezone support