首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clj-time :解析本地字符串

clj-time :解析本地字符串
EN

Stack Overflow用户
提问于 2016-03-21 16:04:57
回答 2查看 878关注 0票数 0

我很难在java.util.Date和clj-time之间实现互操作。

我有第一个原始数据,这是java.util.Date的一个实例,让我们来看看:

代码语言:javascript
复制
(def date (new java.util.util.Date))

我想把它转换成clj时间对象,所以我做到了:

代码语言:javascript
复制
(def st-date (.toString date))

产出:

代码语言:javascript
复制
"Mon Mar 21 16:39:23 CET 2016"

我定义格式化程序

代码语言:javascript
复制
(def date-formatter (tif/formatter "EEE MMM dd HH:mm:ss zzz yyyy"))

我想一切都在这里。

我很努力

代码语言:javascript
复制
(tif/parse order-date-formatter st-date)

我有一个例外,它告诉我格式不对。

我试过了

代码语言:javascript
复制
(tif/unparse order-date-formatter (tic/now))

我也有

代码语言:javascript
复制
"lun. mars 21 15:50:29 UTC 2016"

与java字符串相同的日期时间,但在UTC中使用法语(我的语言)。

包装代码以进行测试

代码语言:javascript
复制
(defn today-date-to-clj []
  (let [st-date (.toString (new java.util.util.Date))
        date-formatter (tif/formatter "EEE MMM dd HH:mm:ss zzz yyyy")]
    (tif/parse date-formatter st-date)))

我似乎认为格式化程序不能在字符串上工作,因为它不是相同的本地化,对吗?怎么改呢?

谢谢你的帮助!

编辑

有人给了我一个更好的答案,但这几乎适用于好奇的人(“2016大学英语考试”的问题,但却适用于解解析)

代码语言:javascript
复制
(def uni-formatter (tif/with-locale (tif/with-zone order-date-formatter (DateTimeZone/forID "Europe/Paris")) java.util.Locale/US))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 16:37:04

与其使用String作为中间日期表示形式,不如使用直接转换:

(clj-time.coerce/from-date (java.util.Date.))

票数 1
EN

Stack Overflow用户

发布于 2016-03-21 16:40:12

仔细看看clj-time的胁迫函数。

您可以将java.util.Date对象传递给from-datefrom-date-time以获得org.joda.time.DateTime,然后将其应用于自定义格式化程序:

代码语言:javascript
复制
(require '[clj-time
           [coerce :as c]
           [format :as f]])

(->> (java.util.Date.)
     (c/to-date-time)
     (f/unparse date-formatter))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36136041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档