Tag: jodatime

如何编写unit testing以确保我的基于日期/时间的代码适用于所有时区和/ DST?

我正在使用JodaTime 2.1,我正在寻找一种unit testing代码的模式,该代码执行日期/时间操作以确保它在所有时区都表现良好且独立于DST 。 特别: 我如何模拟系统时钟(所以我不必模拟我调用new DateTime()以获取当前时间的所有位置) 如何在默认时区执行相同操作?

如何将Joda图书馆的DateTime舍入到最近的X分钟?

如何将Joda图书馆的DateTime舍入到最近的X分钟? 例如: X = 10分钟 6月27日,11:32 – > 6月27日11:30 6月27日,11:33 – > 6月27日11:30 6月27日,11:34 – > 6月27日11:30 6月27日,11:35 – > 6月27日,11:40 6月27日,11:36 – > 6月27日,11:40 6月27日,11:37 – > 6月27日,11:40

如何在Java中将Joda LocalDate转换为String?

我得到了答案:这很简单。 DateTimeFormatter fmt = DateTimeFormat.forPattern(“MM/dd/yyyy”); String formattedDate = jodeLocalDateObj.toString( fmt );

在Java中的两个工作日之间获得分钟

我试图计算Java中两个Joda DateTimes或Calendars之间的分钟数。 当然,如果我可以使用Minutes.minutesBetween函数,这将很简单,但我只计算工作日和上午8:00 – 下午6:00之间的分钟数。 例如: 开始日期:03-11-2015 16:00 结束日期:03-11-2015 17:00 这很简单,因为它恰好是60分钟。 因为这是一个工作日,在给定的工作时间之间。 现在我想要计算的是: 开始日期:03-11-2015 17:00 结束日期:03-12-2015 09:00 这应该返回120分钟,即使两者之间有更多的分钟,因为两个日期之间只有两个工作小时。 有时在两个日期之间也会有一个周末,也不应该添加这些会议记录。 我一直在努力实现这一点,但我还没有找到解决方案。 有任何想法吗? 提前致谢。 编辑:感谢Davis Broda的伪代码,我找到了一个解决方案: private static int BEGINWORKHOUR = 8; private static int ENDWORKHOUR = 16; public int getWorkedMinutes(){ Calendar start = (Calendar) this.startTime.clone(); Calendar end = (Calendar) this.endTime.clone(); if(start.get(Calendar.HOUR_OF_DAY) = ENDWORKHOUR){ end.set(Calendar.HOUR_OF_DAY, ENDWORKHOUR); end.set(Calendar.MINUTE, […]

如何确定特定时间周五和周日之间的日期

我正在尝试检查当前日期和时间是在星期五17:42到星期日17:42之间的Java。 目前我正在用非常糟糕的代码块来做这件事。 这是一个匆忙的解决方案。 现在我正在重构,但我在joda等找不到任何方法。 有任何想法吗? 谢谢 private final Calendar currentDate = Calendar.getInstance(); private final int day = currentDate.get(Calendar.DAY_OF_WEEK); private final int hour = currentDate.get(Calendar.HOUR_OF_DAY); private final int minute = currentDate.get(Calendar.MINUTE); if (day != 1 && day != 6 && day != 7) { if (combined != 0) { return badge == 1; } else { […]

Jodatime:如何打印4位数年份?

我正在使用Jodatime格式化日期,并且使用它我使用区域设置来格式化特定于区域设置。 我希望我的日期格式化为“17/06/2013”​​(分隔符必须取决于区域设置),我几乎可以实现 DateTimeFormat.forStyle(“S-“).withLocale(myLocale) 给出“17/06/13”(2位数年份)。 风格“M-”给出了“17 juin 2013”​​(locale French),这也不是我想要的。 当然我可以使用像“dd / MM / yyyy”这样的模式创建一个格式化程序,这将给我一个4位数的年份,但它不是区域设置敏感的。 我一直在寻找一种方法来修改用“S-”风格创建的格式化程序,但似乎不可能。 获得具有此行为的格式化程序最简单的方法是什么?

奇达日期时间为01.04.1893

我的时区是CET(柏林)。 在测试Joda的DateTime时,我发现了一些奇怪的事情: new DateTime(1893, 4, 1, 0, 0, 0, 0); => java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition: new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate(); => Fri Mar 31 00:06:32 CET 1893 时区的6分32秒移位导致时间不存在? 我必须说这是非常意外的,因为我没有指定任何时区信息,因此不希望遇到这种问题。 如果在1893年3月CET(柏林)不存在 – 为什么new DateTime(1893, 3, 31, 0, 0, 0, 0)选择与我指定的时间相匹配的时区(即0分钟和0秒)? 有什么方法可以使用DateTime获得正确的时间? – 编辑 – 问题似乎是toDate()。 我在发布问题之前编辑了它。 Joda本身实际上工作正常: new […]

如何获取两个日期之间的日期列表?

在我的应用程序中,用户应从listview选择日期。 问题是生成此列​​表。 例如,我需要2010-2013或6月至8月之间的所有日期(期间可能是日 , 月 , 年 )。 是否有任何方法可以获取该数据? 示例:我需要在2013年1月1日至2013年10月1日之间的日期 2013年1月1日 2013年2月1日 2013年3月1日 2013年4月1日 2013年5月1日 2013年6月1日 2013年7月1日 2013年8月1日 2013年9月1日 2013年1月10日 提前致谢

使用可变空格解析日期

我使用Joda来解析日期并使用不使用前导零的格式,例如: Mon Nov 20 14:40:36 2006 Mon Nov 6 14:40:36 2006 请注意,dayOfMonth字段用空白填充。 目前我似乎必须使用两种不同的格式,如果一个失败则重新分析 “EEE MMM dd HH:mm:ss yyyy” “EEE MMM d HH:mm:ss yyyy” 是否有单一格式(或API开关)处理这两种情况? (SimpleDateFormat的答案是一样的 – 我不使用它?)

在跳过假期+ Joda时间时计算结束日期

我想计算一个事件的结束日期 (和时间)。 我知道开始日期和持续时间 (以分钟为单位)。 但: 我不得不跳过假期 – 非经常性情况 我不得不跳过周末 – 经常出现的情况 我不计算工作时间(例如:从早上8点到下午5点) – 经常出现的情况,但细粒度更细 有没有一种简单的方法来使用Joda时间库来实现这些情况?