【问题标题】:Add days to current date将天数添加到当前日期
【发布时间】:2014-11-25 04:17:51
【问题描述】:

我是 clojure 的新手,谁能帮助我了解如何在 clojure 中获取当前日期,然后为其添加天数? 例如向当前日期添加 3 天?

【问题讨论】:

    标签: clojure functional-programming


    【解决方案1】:

    惯用的 Clojure 方法是使用 clj-time(请参阅 Leiningen/Maven 安装说明的链接),它包含 overthink 的第一个答案所引用的 Joda 时间。

    user=> (use '[clj-time.core])
    nil
    user=> (now)
    #<DateTime 2014-11-25T12:03:34.714Z>
    user=> (plus (now) (days 3))
    #<DateTime 2014-11-28T12:05:40.888Z>
    

    【讨论】:

      【解决方案2】:

      这确实不是 Clojure 特定的答案,但我会使用 Joda time。

      (import 'org.joda.time.DateTime)
      (let [now (DateTime/now) 
            later (.plusDays now 3)] 
        [now later])
      
      ;; [#<DateTime 2014-11-24T23:26:05.885-05:00> #<DateTime 2014-11-27T23:26:05.885-05:00>]
      

      【讨论】:

      • 您可以通过指向 Joda 时间的 clj-time 包装器使其特定于 Clojure。 :)
      • @xsc 够公平的。看起来有人提供了这样的答案。
      • 这个答案/真的/需要否决吗?否决投票者可以解释一下吗?
      【解决方案3】:
      user> (import '[java.util Calendar])
      ;=> java.util.Calendar
      user> (defn days-later [n]
              (let [today (Calendar/getInstance)]
                (doto today
                  (.add Calendar/DATE n)
                  .toString)))
      #'user/days-later
      user> (println "Tomorrow: " (days-later 1))
      ;=> Tomorrow:  #inst "2014-11-26T15:36:31.901+09:00"
      ;=> nil
      user> (println "7 Days from now: " (days-later 7))
      ;=> 7 Days from now:  #inst "2014-12-02T15:36:44.785+09:00"
      ;=> nil
      

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-16
        • 1970-01-01
        • 1970-01-01
        • 2017-12-03
        相关资源
        最近更新 更多