Библиотека времени ClojureScript

Я хотел бы сделать некоторые базовые, но не очень простые операции с датами, связанные с ClojureScript, например, получение дней между двумя датами. Существует clj-time, который является оберткой Joda time, поэтому он Clojure. Я также знаю классы даты в Google Closure Library. Для JavaScript существует много возможностей, см. https://stackoverflow.com/info/802861/javascript-date-manipulation-library или https://stackoverflow.com/info/996995/javascript-date-time-library-recommendations. Интересно, есть ли для этого идиоматический способ ClojureScript. Если такого зверя нет, мне интересно, какая библиотека JavaScript будет лучшим кандидатом для упаковки.

Ответ 1

http://momentjs.com прост в использовании для арифметики даты.

Например, разница между двумя датами в количестве дней:

(defn mom []
  (let [log (fn [& args] (.log js/console (apply str args)))
        days-ago (fn [n] (.subtract (js/moment) "days" n))]
    (log {:difference (.diff (days-ago 7) (days-ago 28) "days")})))

(mom) ==> {:difference 21}

Ответ 2

Слишком поздно, но для тех, кто пришел по поиску, есть библиотека cljs-time.

Ответ 3

В проекте, в котором я работаю в данный момент, используется moment.js. Он работает очень хорошо с clojurescript. Я рекомендую проверить это.

Ответ 4

Если вы хотите что-то кроссплатформенное, попробуйте juxt/tick

Что касается дней между двумя датами, кажется, что это работает на обеих платформах (вызов базовых библиотек для .until):

(require '[tick.alpha.api :as t])
(require '[tick.core])
(.until (t/new-date 2019 1 1) (t/new-date 2019 3 5) (tick.core/unit-map :days))
;=> 63