CLOJURE:如何以天为单位查找日期差异,以及在CLOJURE中执行嵌套循环的优化方法

CLOJURE:如何以天为单位查找日期差异,以及在CLOJURE中执行嵌套循环的优化方法,clojure,Clojure,我是Clojure的新手,尝试做一些简单的验证,以验证学生完成的课程在几天内有差距,如果有,那么有多少天 如果希望迭代课程并查找课程1和课程2之间的差异超过20天的课程,可通过查找(课程2的开始日期-课程1的结束日期)之间的差异来完成 这是我的测试数据集,两者之间的间隔超过20天 高级科学-102和数据科学-101课程 [{:course-type "basic-science-101" :start-date "2020-01-01" :end-

我是Clojure的新手,尝试做一些简单的验证,以验证学生完成的课程在几天内有差距,如果有,那么有多少天

如果希望迭代课程并查找课程1和课程2之间的差异超过20天的课程,可通过查找(课程2的开始日期-课程1的结束日期)之间的差异来完成

这是我的测试数据集,两者之间的间隔超过20天 高级科学-102和数据科学-101课程

[{:course-type "basic-science-101"
  :start-date "2020-01-01"
  :end-date "2020-05-01"} 
 {:course-type "advanced-science-102"
  :start-date "2020-05-15"
  :end-date "2020-10-01"}
 {:course-type "datascience-science-101"
  :start-date "2020-12-01"
  :end-date "2021-03-20"} 
 ]
到目前为止,我已经有了这段代码,我正在迭代这些课程,并试图找出两门课程的开始日期和结束日期之间的差异,以确定这两门课程之间是否存在任何差距

    (ns student-course-ruleset.courses-test
  (:require [java-time :as jt]))


(def mycourses [{:course-type "basic-science-101"
                 :start-date "2020-01-01"
                 :end-date "2020-05-01"}
                {:course-type "advanced-science-102"
                 :start-date "2020-05-20"
                 :end-date "2020-10-01"}
                {:course-type "datascience-science-101"
                 :start-date "2020-11-15"
                 :end-date "2021-01-20"}])


(defn select-values [map ks]
  (remove nil? (reduce #(conj %1 (map %2)) [] ks)))

(defn find-gap-in-course [mycourses]
  (loop [[course1 & mycourses] mycourses]
    (loop [[course2 & mycourses] mycourses]

      (when (and (not-empty course1) (not-empty course2))
        (println "Finding gap of courses : " course1 course2)
        (println "Current courses in comparison are : " (select-values course1 [:course-type])
                 (select-values course2 [:course-type]))
        
        (println "Finding Gap in courses:  ")
        ;; (jt/gap (select-values course2 [:start-date]) (select-values course1 [:end-date]))
        )
      )
    (if course1 (recur mycourses))
    ))


(find-gap-in-course mycourses)
您可以从clj时间使用(t/间隔)进行测试


你试过什么?你的算法是什么?目前还不清楚这是一个与Clojure相关的问题,只是您使用了Clojure符号表示数据。我使用了(acc/all)并获取了此学生课程信息列表,现在我一直在思考如何迭代向量集,然后将当前集的开始日期与前一集的结束日期进行比较。您好,你可能想重组你的问题,这样你想做的事情就更清楚了。在这种情况下,您可能想说您需要帮助解析日期,或者您不知道如何提取日期请在此处查看“如何提出一个好问题”:对于您的问题,请参阅此模板项目中的文档列表,特别是获取Clojure和Clojure备忘单:对于您的问题,您需要
java.time.LocalDate/parse
,然后
java.time.Period/between