首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure java-time - date向前移动了一年?

clojure java-time - date向前移动了一年?
EN

Stack Overflow用户
提问于 2019-12-18 16:16:17
回答 1查看 196关注 0票数 4

我对包装Java8的java.time应用程序接口的clojure.java-time库用法感到困惑。

我想要一个函数,它可以将字符串格式的日期从"yyyy-MM-dd'T' hh:mm:ss“格式转换为"MM/dd/YYYY hh:mm:ss a”格式。

下面是我的函数:

代码语言:javascript
复制
(require '[java-time :as jt])

(defn change-ds-format [in-ds]
  {:pre [string? in-ds ]}
  (let [input-format "yyyy-MM-dd'T'HH:mm:ss"  
        output-format "MM/dd/YYYY hh:mm:ss a"]
    (->> in-ds
         (jt/local-date-time input-format)
         (jt/format output-format)))) 

下面的代码看起来没问题:

代码语言:javascript
复制
(change-ds-format "2019-12-28T00:00:00" )
;=> "12/28/2019 12:00:00 AM"

我不知道为什么要推到2020年?

代码语言:javascript
复制
(change-ds-format "2019-12-29T00:00:00" )
;=> "12/29/2020 12:00:00 AM"
;; Why is this one 2020 ???

我想这可能是一个时区偏移的问题,但我不相信它应该转移到2020年。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-18 16:29:57

因为yyyy不是YYYY

来自Oracle docs for DateTimeFormatter

代码语言:javascript
复制
 ... snip...
u       year                        year              2004; 04
y       year-of-era                 year              2004; 04
...snip...
Y       week-based-year             year              1996; 96
w       week-of-week-based-year     number            27
...snip...

我不太精通日期时间算术或细微差别,但我相信在按周计算的年份中,今年12月30日和31日被算作2020年,因为这些日期属于第1周,而不是第52周或第53周。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59387924

复制
相关文章

相似问题

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