相关疑难解决方法(0)

Java 8 Date Time API(java.time)和Joda-Time之间的差异

我知道有关于java.util.Date和Joda-Time的问题.但经过一番挖掘后,我找不到关于java.time API(Java 8中新增,JSR 310定义)和Joda-Time之间差异的线程.

我听说Java 8的java.time API比Joda-Time更清洁,可以做得更多.但我找不到比较两者的例子.

  • 什么java.time可以做到Joda-Time不能?
  • java.time能比Joda-Time做得更好吗?
  • java.time的性能更好吗?

java datetime jodatime java-8 java-time

258
推荐指数
3
解决办法
7万
查看次数

我们是否在Java中使用TimeSpan类

我只是想知道是否需要TimeSpan,java.util以便我可以定义这两次之间有多少小时,分钟和秒.

由此TimeSpan我们可以有两次之间的时间间隔.喜欢

TimeSpan getTimeSpan( Date before, Date after ){...}
Run Code Online (Sandbox Code Playgroud)

要么

long timeSpan = System.currentTimeMillis();
// ... long job
timeSpan = System.currentTimeMillis() - timeSpan;

TimeSpan ts = new TimeSpan(timeSpan);
Run Code Online (Sandbox Code Playgroud)

有了它,TimeSpan我们可以使用它SimpleDateFormat.

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
format.format( timsSpan );
Run Code Online (Sandbox Code Playgroud)

我不确定这是否已经在Java中实现,但我还没有发现.

java timespan java.util.date

47
推荐指数
2
解决办法
4万
查看次数

Java:如何获得一个月中x天的日期(例如2012年2月的第三个星期一)

我有点挣扎于此.

我想设置我的日历让我们说:2012年2月的第三个星期一. 我没有找到任何使用Java的方法.

例如,如果我想设置2011年圣诞节的日历,我可以通过这种方式轻松完成:

Calendar when = Calendar.getInstance();
when.set (Calendar.MONTH, Calendar.DECEMBER);
when.set (Calendar.DAY_OF_MONTH, 25)
when.set (Calendar.YEAR, 2011);
Run Code Online (Sandbox Code Playgroud)

但我很遗憾如何设置它让我们说2012年阵亡将士纪念日,即5月的最后一个星期一.这是我的代码,但这显然是错误的,因为我根本无法假设5月的最后一个星期一将在当年5月的第4周:

Calendar when = Calendar.getInstance ();
when.set (Calendar.DAY_OF_WEEK,Calendar.MONDAY);
when.set (Calendar.MONTH, Calendar.MAY);
when.set (Calendar.WEEK_OF_MONTH, 4)
when.set (Calendar.YEAR, 2012);
Run Code Online (Sandbox Code Playgroud)

关于我如何以编程方式找出的任何建议,在2012年5月的哪个星期(例如上面的例子)是最后一个星期一?假设我可以获得该信息,我应该能够使我的代码在上面工作.

我需要一些基本上适用于任何其他例子的东西.可以为相同场景提供确切日期的东西.例子:

哪个日期是:

  • 2015年5月第3个星期四
  • 2050年6月1日星期一
  • 2012年12月4日星期二
  • 2000年7月2日星期三

我真的需要这个用于我的项目,我确信这很简单,但是我在这个没有任何实际结果的情况下突破了我的头脑:)并且在网上也找不到任何东西.


添加:

好的,这是我一个月的最后一个星期一的地方:

when.set (GregorianCalendar.MONTH, GregorianCalendar.MAY);
when.set (GregorianCalendar.DAY_OF_WEEK, Calendar.MONDAY);
when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, -1);
when.set (Calendar.YEAR, 2012);
Run Code Online (Sandbox Code Playgroud)

但我不知道我会在同一个月的星期一如何做这样的事情,就像这样?

when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, 2);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java calendar date

14
推荐指数
3
解决办法
1万
查看次数

Clojure - 解析字符串到目前为止

我正在尝试将包含日期(例如今天="08082013"​​)的无格式字符串解析为格式"08.08.2013"​​.

这有效: (.parse (java.text.SimpleDateFormat. "ddMMyyyy") today) =><Date Sun Jan 01 00:00:00 CET 1950>

但是当我这样做时,(.parse (java.text.SimpleDateFormat. "dd.MM.yyyy") today)我得到了错误"Unparseable date: "08082013"

为什么?如何获得所需的日期格式?

format parsing date clojure

7
推荐指数
1
解决办法
7978
查看次数

解析字符串以在Clojure中以特定格式获取日期和时间

我刚开始玩机智/小鸭子。它是用Clojure编写的,我以前没有Clojure的经验。我需要将2016-08-14T19:45:48.000 + 05:30这样的字符串解析为2016年8月14日(星期日)1945hrs之类的格式。我在Internet上搜索并遇到了lib clj-time。经过很长时间的努力后,我遇到了这个线程,并认为rfc822是我的杯茶。因此,我使用了格式化程序rfc822,但它给了我一个例外:

java.lang.IllegalArgumentException: Invalid format: "2016-08-16T00:00:00.000+05:30"

这是我的代码:

(ns firstproj.core
  (:gen-class)
  (:require [duckling.core :as p])
  (:require [clj-time.format :as f]))

(defn -main
  "I don't do a whole lot."
  [x]
  (p/load! { :languages ["en"]})
  (def var_ (p/parse :en$core x [:time]))
  (def date_string "2016-08-14T19:45:48.000+05:30")
  (f/parse (f/formatters :rfc822) date_string))
Run Code Online (Sandbox Code Playgroud)

所以有人可以告诉我我在做什么错。或Clojure中的任何其他方式来获取我想要的日期时间格式。由于我对Clojure完全幼稚,因此请您详细回答,这将有助于我更好地理解这一点。谢谢。

clojure clj-time

1
推荐指数
1
解决办法
1032
查看次数