For date/time, there’s
clj-time on the JVM (wrapping Joda Time) and
cljs-time for JS and they have very similar APIs so that means you only need to conditionally
require the appropriate namespace (with the same alias) to be able to write
.cljc code that works on both sides.
That said, Joda Time is deprecated now that Java Time is part of Java 8+. There’s
clojure.java-time for wrapping Java Time on the JVM and some folks have expressed interest in a cljs version of that library (presumably wrapping the same JS library as
cljs-time wraps?) but someone has to want it enough to create that wrapper.
I think, realistically, not enough people are using ClojureScript on Node to warrant the effort involved to create such abstractions. Clojure’s design as a “hosted language” means that host interop is the recommended way to tackle host-specific stuff and 1. it’s painless enough that folks don’t build wrappers and 2. the hosts implement some of these things so differently that there is no one-size-fits-all abstraction.