Details
Description
Any timestamps with a greater than millisecond precision cannot be handled by the ClouseScript reader:
> cljs.reader.read_date("2012-12-30T23:20:05.066980000-00:00")
> Error: Assert failed: timestamp millisecond field must be in range 0..999 Failed: 0<=66980000<=999 (<= low n high)
Here "2012-12-30T23:20:05.066980000-00:00" is an example of an ordinary timestamp that is returned from Postgres.
ClojureScript reader interprets the nanosecond portion "066980000" as milliseconds and the check here fails:
def parse-and-validate-timestamp
...
(check 0 ms 999 "timestamp millisecond field must be in range 0..999")
We definitely don't want to mutate Date's prototype without namespacing. I'm not sure we want to mutate Date's prototype at all. That's why I suggested a ClojureScript type with the same interface as Date just as Google has done in Closure.