问题标签 [clj-time]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
390 浏览

mongodb - 有没有根据特定时区按天对记录进行分组的有效方法?

我正在使用 MongoDB 数据库来跟踪应用程序的分析。我正在编写一个 Clojure 应用程序(使用 clj-time 和 Monger)来从数据库中获取数据。

我有一个包含类似记录的集合

每个不同device的代表我的服务的不同用户。我想做的是找出我每天有多少(唯一)用户,但需要注意的是,我希望“一天”专门指美国/中部时区,考虑夏令时. (如果这不是一个要求,我想我可以做一些类似 a$group然后 a 的事情distinct。)

这是我一直在做的事情:

如果您看不懂 Clojure,这基本上是说:获取中央时区最近n 个午夜的列表,然后运行 ​​Mongo 查询以查找每对连续午夜之间的所有记录。然后,计算device每天不同 s 的数量。

这是我不喜欢这种方法的地方:

  1. 每天运行一个单独的查询(我通常一次查看 30 天)感觉不对;这是应该在数据库端而不是应用程序端完成的事情。
  2. 计算不同device的 s 也应该由数据库完成。
  3. 我的服务器设置为 UTC 时区,因此如果它在 UTC 午夜之后但在中央时间午夜之前,则此列表中的最后一个条目将始终为零。这很容易修补,但我更喜欢一个足够聪明的解决方案来首先防止它。
  4. 整个函数运行大约需要 500 毫秒。这并不可怕——我是唯一一个运行查询的人,而且每天只有一两次——但看起来这个操作不应该花那么长时间。

有没有办法可以将更多这种逻辑推入 MongoDB 查询?

0 投票
1 回答
2125 浏览

clojure - 如何“解析”特定时区的日期?

使用 clj-time,我可以解析日期和时间

我可以通过这样做将它转换回字符串

这是 UTC 时区内那个时刻的年、月和日。如何获得DateTime相对于另一个时区的未解析版本?例如,对于上面的示例,我想指定 UTC–5 时区并获取字符串“2013-06-03”。我玩过from-time-zoneto-time-zone但似乎找不到函数和参数的正确组合。

0 投票
1 回答
265 浏览

clojure - clj-time 总是返回今天的日期。

我这里有一个奇怪的问题。我正在从数据库中调用日期,并尝试显示格式为“2013-01-01”的 PostgreSQL 日期,以在我的网站上显示为“2013 年 1 月 1 日”

我有以下代码:

对数据库的调用如下所示:

如果我从 REPL 中测试,上面的代码可以满足我的要求:

但是我在网页上看到的是“2013 年 9 月 1 日”(截至撰写本文时的今天),没有其他日期。我的数据库中没有“2013-09-01”。

我从 (coerse-mdy) 的数据库中返回了原始日期值,它返回了正确的日期,所以我能够隔离这个问题的最接近的是 (to-mdy) 或 (coerce- mdy)。

到目前为止,我已经尝试将函数移动到本地命名空间并使用本地化的 let 值。

0 投票
3 回答
3780 浏览

datetime - clj-time 并显示在用户的时区

我一直在玩 to-local-date-time、org.joda.time.DateTimeZone/getDefault、格式化程序等,但我仍然不知道如何获取我存储为 UTC 的日期时间显示在用户的时区。我可以使用一些格式化程序来显示时间,但它会显示带有偏移量的 UTC 时间。例如,如果我有 2013-10-05T19:02:25.641-04:00,我怎样才能让它显示“2013-10-05 14:02:25”?

0 投票
2 回答
1137 浏览

java - 关于夏令时的时差

我有两个longs 代表自纪元以来的时间。他们都有相同的时区。我想找出这两次之间的秒数差异,尊重日光节约。

“a”在哪里2009-11-30T08:13:16.000-00:00

“b”在哪里2009-10-10T04:00:00.000-00:00

使用 JodaTime,我可以Interval将这两次制作出来,将它们变成Duration,然后得到StandardSeconds.

但这不起作用,因为 docs forPeriod表明这Duration会弄乱日光节约:

当这个时间段加到一个瞬间时,效果就是依次添加每个字段。因此,这会考虑夏令时。将 1 天的时间段添加到夏令时开始的前一天只会增加 23 小时而不是 24 小时,以确保时间保持不变。如果这不是您想要的行为,请参阅持续时间。

我怎样才能完成这项任务?

0 投票
1 回答
1022 浏览

clojure - Clojure 将时间戳解析为字符串

我正在尝试将 clojure 时间戳转换为特定格式。我正在使用 clj-time 库。https://github.com/clj-time/clj-time。这是我正在做的事情:

这看起来很像文档示例,但我不明白为什么我的 ClassCastException 看起来像这样:

谢谢你的帮助。

0 投票
1 回答
542 浏览

date - 使用 clj-time 按语言环境确定日期格式

我已经通过谷歌搜索了很长一段时间,但我找不到 clj-time 的最终解决方案。我想通过语言环境自动格式化日期,就像在这个例子这里。我将如何使用 clj-time 执行此操作?

感谢和干杯

0 投票
2 回答
1202 浏览

datetime - Clojure:序列化和解析文件的日期/时间?

我想将一些测试数据存储到一个文件中,并在我的测试中再次读出。数据是一系列 Clojure 映射,其中一个属性是clj-time( org.joda.time.DateTime) 日期/时间。当我将值写入文件(使用spit)时,它会序列化为#<DateTime 2014-10-03T12:57:15.000Z>. 当我尝试读回它(使用slurp)时,我得到:

我想这并不奇怪,因为没有更多信息,我看不出它如何知道如何解析DateTime. 有没有办法读取这些值并正确解析它们,或者我必须将它们序列化为字符串并在我读回它们时手动解析它们?

0 投票
1 回答
5521 浏览

clojure - 使用 clj-time 获取 DateTime 实例之间的差异

我正在尝试使用clj-time计算两个 DateTime 实例之间的差异。我查看了文档并发现clj-time.core/minusclj-time.core/minus-但两者都需要一个实例org.joda.time.ReadablePeriod而不是DateTime. 我更喜欢使用 cli-time,但如果不存在解决方案,那么使用 Joda Time 计算增量的最简洁方法是什么?

感谢您的帮助。

0 投票
4 回答
4308 浏览

java - 如何在 Clojure 中为日期添加天数

我查看了以下问题: How to add days to current date in clojure

但是,我对 Clojure 很陌生,我陷入了以下场景,我得到了字符串格式的时间戳。所以我使用以下方法解析它:

这给了我一个看起来像这样的结果:

如何在其中添加 90 天,然后将其转换回字符串格式?我根据上面的链接尝试了这个:

这给了我以下错误: