Я хотел бы сделать некоторые базовые, но не очень простые операции с датами, связанные с 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 будет лучшим кандидатом для упаковки.
Библиотека времени ClojureScript
Ответ 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