6

Clojure初心者の質問です。クライアント (任意の言語で記述) から、Datomic データベース上にある clojure で記述されたサーバーに日付を渡す最良の方法を見つけようとしています。言語固有のクラスに関する問題を回避するために、日付を RFC3339 形式の文字列として渡すことを計画していました。ただし、Clojure で文字列を解析するのに問題があります。私の、明らかに間違った仮定は、私ができることでした:

(clojure.instant/parse-timestamp "2014")

したがって、インスタントを取得します。ただし、この呼び出しの結果は

clojure.lang.ArityException: Wrong number of args (1) passed to: instant$fn--6183$fn …

私が見る限り、この関数は単一の引数 (フォーマットされた文字列) しかとらないので、これは私を大いに混乱させます。

私は何を逃したのですか?

4

1 に答える 1

13

parse-timestampは 2 つの引数の関数です。タイムスタンプの文字列表現は 2 番目のものです。最初のものは、一連の引数を取り、インスタントを表すオブジェクトを構築する関数を渡すためのものです。このnew-instant関数の引数は、parse-timestamp-- 詳細(doc clojure.instant/parse-timestamp)については を参照してください。

通常、タイムスタンプを読み取るための一連の関数をエクスポートするため、parse-timestamp直接呼び出す必要はありません。clojure.instant

(clojure.instant/read-instant-date "2014-04-23T10:13Z")
;= #inst "2014-04-23T10:13:00.000-00:00"

read-instant-calendarread-instant-timestampは、このタイプの他の 2 つの関数です。それらはすべて を使用して構築されてparse-timestampおり、契約を文書化する docstrings を持っています。

于 2014-04-23T08:15:24.340 に答える