Tag: 时间

结合重叠日期范围 – Java

我有一个Task类,如下所示(使用Java 8 Time API)。 class Task { LocalDateTime start; LocalDateTime end; Set actionItems; } 我有两个排序(首先是开始,然后是结束)列表包含这样的任务实例,让我们说List tasksList1和List tasksList2 。 我想组合重叠的任务(通过在需要时分解任务,并从重叠到单个新任务对象的其他任务中添加actionItem)。 例如,假设我有一个名为T1的任务,从2015年1月1日开始,到2015年1月31日结束,其中包含操作项A和B.然后用户创建一个从01/15开始的新任务T2 / 2015年并于2015年2月15日结束,并将行动项目C添加到其中。 当我合并时,我应该得到三个Task对象,如下所示。 任务X – 从2015年1月1日到2015年1月15日,包含操作项A,B 任务Y – 从2015年1月15日到2015年1月31日,包含项目A,B和C. 任务Z – 从2015年1月31日到2015年2月15日,包含项目C. 要进行可视化,如果两个列表中的任务对象在时间轴中看起来如下所示: > [—–] [—–] [—-] [—————–] > [—–] [—————] [——] 然后,生成的任务列表将包含如下任务。 > [–][-][–] [—–] [—–][—-][–] [-][——][—–]` 重叠任务应该将actionItems组合在两个重叠的时间段内重叠的任务中。 处理这个问题最有效的方法是什么? 目前我正在尝试使用PeekableIterator的不同选项,但还没有运气。 任何使用JodaTime而不是Java 8 API的解决方案也是受欢迎的。

使用Joda时间比较两个日期

我想比较两个日期,但是我遇到了麻烦。 1日期是从java.util.date对象创建的,另一个是手动制作的。 以下代码是一个示例: Date ds = new Date(); DateTime d = new DateTime(ds); DateTime e = new DateTime(2012,12,07, 0, 0); System.out.println(d.isEqual(e)); 然而,测试结果是false 。 我猜这是因为时间。 如何检查这两个日期是否相等(我的意思是年,月,日期是相同的)?

将Java字符串转换为时间,而不是日期

我想将变量字符串转换为Time类型变量,而不是使用Java的Date。 字符串看起来像这样17:40 我尝试使用下面的代码但这个实例是一个日期类型变量而不是时间 String fajr_prayertime = prayerTimes.get(0); DateFormat formatter = new SimpleDateFormat(“HH:mm”); fajr_begins = (Date)formatter.parse(fajr_prayertime); System.out.println(” fajr time ” + fajr_begins); 但Netbean抱怨我应该插入一个例外,如下所示; DateFormat formatter = new SimpleDateFormat(“HH:mm”); try { fajr_begins = (Date)formatter.parse(fajr_prayertime); } catch (ParseException ex) { Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex); } System.out.println(” fajr time ” + fajr_begins); 知道如何从上面的字符串中获取时间。

Java循环持续一段时间

有没有办法可以轻松地在一段时间内进行for循环? (没有使用System.currentTimeMillis()测量自己的时间?) 即我想在Java中做这样的事情: int x = 0; for( 2 minutes ) { System.out.println(x++); } 谢谢

如何在Joda-Time获得正确的当前日期和时间?

如何在Joda Time获得正确的实际日期和时间? 适当地,我指的是在我的国家的时间。 我阅读了官方网页和一些教程 – 关于Locales和时区的内容很多,但我发现它很混乱。 我没有找到任何例子如何简单地得到它。 我需要两件事: 1)在争论中获得最新信息 2)获取当前时间,我将与出生日期“比较”并计算年龄。 如何设置UTC + 1(布拉格 – 捷克共和国)时的当前时间? 谢谢

使用Java 8转换日期时间字符串,如Joda DateTime(String)

我有一个API,可以用三种可能的格式返回JSON中的日期值: 2017-04-30T00:00 + 02:00 2016-12-05T04:00 2016年12月5日 我需要将所有三个转换为java.time.LocalTimeDate 。 Joda在DateTime对象上有一个很好的构造函数,它接受所有三种格式作为字符串并转换它们。 DateTime dt = new DateTime(StringFromAPI); 足够。 Java 8( java.time包)中是否有类似的function? 我现在首先必须使用正则表达式来检查格式,然后创建LocalDateTime , ZonedDateTime或LocalDate ,并将后者2.转换为LocalDateTime 。 对我来说似乎有点麻烦。 有一个简单的方法吗?

现在用Java获取当前时间精度(微秒)的任何​​新方法?

我检查了下面的页面,没有方法可以获得2009年Java中微秒精度的当前时间。 java中的当前时间(以微秒为单位) 最好的是System.currentTimeMillis(),它以毫秒为单位给出当前时间精度,而System.nanoTime()给出当前时间戳的准确度,以纳秒为单位,但是这个时间戳不能用于高精度地转换为当前时间。 我可以在6年后知道Java中是否有任何新的更新? 谢谢。 编辑1. System.nanoTime()对于估计持续时间非常有用,但不能提供当前时间。 编辑2.在Java 8中使用解决方案是件好事。在Java 7中还有其他方法吗? 谢谢!

获取Java日期或日历的Time组件

是否有一种简单或优雅的方式只能抓取Java Date(或日历)的一天中的时间(小时/分钟/秒/毫秒),这对我来说无关紧要? 我正在寻找一个很好的方法来分别考虑日期(年/月/日)和时间部分,但据我所知,我坚持分别访问每个字段。 我知道我可以编写自己的方法来单独抓取我感兴趣的字段,但我会将其作为静态实用程序方法,这很难看。 另外,我知道Date和Calendar对象具有毫秒精度,但在任何一种情况下我都没有看到访问毫秒组件的方法。 编辑:我不清楚这一点:使用Date :: getTime()或Calendar :: getTimeInMillis之一对我来说并不是非常有用,因为那些返回自纪元以来的毫秒数(由该日期或日历表示) ,实际上并没有将时间与其他信息分开。 @Jherico的答案是最接近的事情,我想,但绝对是我仍需要采用我自己编写的方法。 这不是我想要的,因为它仍然包括返回毫秒值的小时,分​​钟和秒 – 尽管我可能会使它适用于我的目的。 我仍然认为每个组件都是独立的 ,尽管它们当然不是。 您可以将时间写为自任意参考日期以来的毫秒数,或者您可以写出与year/month/day hours:minutes:seconds.milliseconds完全相同的时间year/month/day hours:minutes:seconds.milliseconds 。 year/month/day hours:minutes:seconds.milliseconds 。 这不是用于显示目的。 我知道如何使用DateFormat制作漂亮的日期字符串。 编辑2:我原来的问题来自我发现自己编写的一小组实用函数 – 例如: 检查两个Date是否代表同一天的日期时间; 检查日期是否在由其他两个日期指定的范围内,但有时检查包含,有时不检查,具体取决于时间组件。 Joda Time有这种function吗? 编辑3: @ Jon关于我的第二个要求的问题,只是为了澄清:第二个要求是使用我的日期有时代表整天的结果 – 时间组件根本不重要 – 有时代表日期时间(这是IMO,包含year/month/day 和 hours:minutes:seconds:…的最准确的单词hours:minutes:seconds:… )。 当Date表示整天时,其时间部分为零(例如Date的“time component”是午夜),但语义规定范围检查在结束日期包含。 因为我只是将此检查留给Date :: before和Date :: after,所以我必须在结束日期添加1天 – 因此当Date的时间组件为零时的特殊shell。 希望没有让事情变得不那么清楚。

在Java中单调增加时间?

在Java应用程序中,我希望能够在操作开始时获取时间戳,并能够定期检查操作运行的时间。 问题是:我不希望受到网络时间协议的影响,或者管理员改变时间,或任何可以突然调整时间的东西。 我想要一个单调增加的时间价值。 我相信这会排除java.util.Date,Time和Calendar。 JRE中是否存在单调增加时间戳的某些来源?

joda DateTime解析器错误

我使用jodatime来解析日期时间字符串,如下所示: public static void main(String [] args){ String s =“16-Jul-2009 05:20:18 PDT”; 字符串模式=“dd-MMM-yyyy HH:mm:ss z”; DateTimeFormatter fm = DateTimeFormat.forPattern(patterns); DateTime d = fm.parseDateTime(s); 的System.out.println(d); } 我明白了 线程“main”中的exceptionjava.lang.IllegalArgumentException:格式无效:“16-Jul-2009 05:20:18 PDT”在“PDT”格式错误 at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683) 怎么了? 如何正确解析时区?