Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure clj时间-如何从不同时区的当前时间获取本地日期_Clojure_Timezone_Clj Time - Fatal编程技术网

Clojure clj时间-如何从不同时区的当前时间获取本地日期

Clojure clj时间-如何从不同时区的当前时间获取本地日期,clojure,timezone,clj-time,Clojure,Timezone,Clj Time,我坐在美国/圣保罗(或其他一些随机时区),现在我想得到欧洲/伦敦当前日期的本地日期 我怎样才能做到这一点 (我知道一个本地日期在伦敦,我想用clj time.core/after检查它是否在当前日期之前?注意: clj时间库基于旧的Joda时间库。为了支持java.time(从JDK 8开始提供),这两种方法都被弃用了。最好将Java互操作与Java.time一起使用,而不要使用旧的clj-time库。 包java.time基本上是JodaTime2.0,但被重写为更干净,并纠正了一些极端情况。

我坐在美国/圣保罗(或其他一些随机时区),现在我想得到欧洲/伦敦当前日期的本地日期

我怎样才能做到这一点

(我知道一个本地日期在伦敦,我想用clj time.core/after检查它是否在当前日期之前?

注意: clj时间
库基于旧的Joda时间库。为了支持
java.time
(从JDK 8开始提供),这两种方法都被弃用了。最好将Java互操作与Java.time一起使用,而不要使用旧的
clj-time
库。

java.time
基本上是JodaTime2.0,但被重写为更干净,并纠正了一些极端情况。两者都是由同一个人创建的


答复: 在Java中,
LocalDate
没有时区。这就是重点

用于生日之类的事情,比如1999年12月31日,我们不认为你的生日有时区。

出于同样的原因,
LocalDate
没有任何时间与之关联,就像你的生日被认为是一整天一样

有关更多信息,请参阅
java.time
文档:


从JavaDocs:

日期和时间

Instant本质上是一个数字时间戳。这个 可以从时钟中检索当前瞬间。这对我们来说很有用 记录和持久化一个时间点,并在过去 与存储System.currentTimeMillis()的结果相关联

LocalDate存储没有时间的日期。这存储了一个日期,如 “2010-12-03”,可用于储存生日

LocalTime存储没有日期的时间。这储存了一段时间 “11:30”,可用于存储打开或关闭时间

LocalDateTime存储日期和时间。这将存储一个日期时间,如 “2010-12-03T11:30”

ZoneDateTime存储带有时区的日期和时间。这是有用的 如果您想准确计算日期和时间 考虑到区域划分,例如“欧洲/巴黎”。如果可能的话,就是这样 建议使用不带时区的简单类。广泛的 时区的使用往往会给一个系统增加相当大的复杂性 应用程序


辅助功能:

我添加了
java.time
,以帮助您使用它。

注意: clj时间
库基于旧的Joda时间库。为了支持
java.time
(从JDK 8开始提供),这两种方法都被弃用了。最好将Java互操作与Java.time一起使用,而不要使用旧的
clj-time
库。

java.time
基本上是JodaTime2.0,但被重写为更干净,并纠正了一些极端情况。两者都是由同一个人创建的


答复: 在Java中,
LocalDate
没有时区。这就是重点

用于生日之类的事情,比如1999年12月31日,我们不认为你的生日有时区。

出于同样的原因,
LocalDate
没有任何时间与之关联,就像你的生日被认为是一整天一样

有关更多信息,请参阅
java.time
文档:


从JavaDocs:

日期和时间

Instant本质上是一个数字时间戳。这个 可以从时钟中检索当前瞬间。这对我们来说很有用 记录和持久化一个时间点,并在过去 与存储System.currentTimeMillis()的结果相关联

LocalDate存储没有时间的日期。这存储了一个日期,如 “2010-12-03”,可用于储存生日

LocalTime存储没有日期的时间。这储存了一段时间 “11:30”,可用于存储打开或关闭时间

LocalDateTime存储日期和时间。这将存储一个日期时间,如 “2010-12-03T11:30”

ZoneDateTime存储带有时区的日期和时间。这是有用的 如果您想准确计算日期和时间 考虑到区域划分,例如“欧洲/巴黎”。如果可能的话,就是这样 建议使用不带时区的简单类。广泛的 时区的使用往往会给一个系统增加相当大的复杂性 应用程序


辅助功能:


我添加了
java.time
的用法,您可能会发现它很有用。

似乎没有一个函数可以从中获取
LocalDate
一个
DateTime
或类似的
clj-time
——但是Joda-time
.toLocalDate
。例如,你可以这样做:

(defn date-at-zone
  [instant zone-id]    
  (.toLocalDate                                                                                                                                                         
   (t/to-time-zone                             
    instant                                                                   
    (t/time-zone-for-id zone-id))))                                        
                                                                  
 (let [instant (t/date-time 2020 12 12 1)                                  
       london-date (date-at-zone instant "Europe/London")
       sao-paulo-date (date-at-zone instant "America/Sao_Paulo")]
   (print (map str [instant london-date sao-paulo-date (t/after? london-date sao-paulo-date)])))       
; → (2020-12-12T01:00:00.000Z 2020-12-12 2020-12-11 true)
(例如,在2020-12-12T01:00祖鲁,圣保罗和巴黎仍然是2020-12-11。) 因此,仅从世界范围来看,伦敦“严格地说是在圣保罗之后”
日期——或者已经是“明天”了(在伦敦)

似乎没有一个函数可以从中获取
LocalDate
一个
DateTime
或类似的
clj-time
——但是Joda-time
.toLocalDate
。例如,你可以这样做:

(defn date-at-zone
  [instant zone-id]    
  (.toLocalDate                                                                                                                                                         
   (t/to-time-zone                             
    instant                                                                   
    (t/time-zone-for-id zone-id))))                                        
                                                                  
 (let [instant (t/date-time 2020 12 12 1)                                  
       london-date (date-at-zone instant "Europe/London")
       sao-paulo-date (date-at-zone instant "America/Sao_Paulo")]
   (print (map str [instant london-date sao-paulo-date (t/after? london-date sao-paulo-date)])))       
; → (2020-12-12T01:00:00.000Z 2020-12-12 2020-12-11 true)
(例如,在2020-12-12T01:00祖鲁,圣保罗和巴黎仍然是2020-12-11。) 因此,仅从世界范围来看,伦敦“严格地说是在圣保罗之后” 日期——或者已经是“明天”了(在伦敦)

我不知道。所以我将使用Java语法,您可以对其进行翻译

我坐在美国/圣保罗(或其他一些随机时区)

无关紧要。无论你的屁股是在东京、雷克雅未克还是圣保罗,这与询问
欧洲/伦敦
时区的当前日期无关

现在我想为欧洲/伦敦的当前日期获取一个LocalDate

通过感兴趣的时区时呼叫

ZoneId zoneId = ZoneId.of( "Europe/London" ) ;
LocalDate currentDateInLondon = LocalDate.now( zoneId ) ;
我知道一个本地日期在伦敦,我想检查它是否在当前日期之前

<