代表刚刚过去的一年'和'年月'在Clojure / Java中

时间:2015-12-11 03:14:41

标签: java clojure

我正在尝试表示年 - 月的精确度的时间信息。例如。 “ 1998 '患者有右手腕骨折史;自 2015年10月以来头痛的历史'

我查看了Joda-Time YearMonth org.joda.time.YearMonth但不仅仅是'年'。但即使是YearMonth似乎也有点不连贯。 E.g。

(clj-time.core/year-month 2015 02)
(clj-time.core/date-time  2015 11 15)

=> #object[org.joda.time.YearMonth 0x7a19d121 "2015-02"]
=> #object[org.joda.time.DateTime 0x5625de93 "2015-11-15T00:00:00.000Z"]

你可以做一些操作,例如:

(clj-time.core/month (clj-time.core/year-month 2015 02))
(clj-time.core/month (clj-time.core/date-time  2015 11 15))

=> 2
=> 11

但不是这样:

(clj-time.core/before? (clj-time.core/year-month 2015 02)
                       (clj-time.core/date-time  2015 11 15))

=> Exception thrown: java.lang.ClassCastException (org.joda.time.DateTime 
                     cannot be cast to org.joda.time.ReadablePartial)

java.time的类似结果:

(.compareTo (java.time.Year/of 2007) (java.time.LocalDate/now))

=> Exception thrown: java.lang.ClassCastException (java.time.LocalDate
                     cannot be cast to java.time.Year)

我希望能够做的是代表时间实体,例如Year和YearMonth,它们的精确度 - 不多也不少,并且还用它们进行日期数学运算。 E.g:

  • 年份 1998 将表示为间隔' 1998年1月1日'到2015年12月31日' 2015年10月' 2015年10月'到' 2015年10月31日'
  • 并且能够对这些时间实体 进行比较和执行其他操作。

有没有人为此找到了一个好的解决方案?或者我应该看看构建自己的解决方案/库?

0 个答案:

没有答案