如何在间隔中获得周末? joda时间 [英] how to get weekends in an Interval? joda time

查看:255
本文介绍了如何在间隔中获得周末? joda时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

间隔间隔=新间隔(新DateTime(2014-01-01),新DateTime(2014-01-30));

有没有办法获得周末天数?



如下:

  interval.toPeriod.getWeekendDays(); 


解决方案

自定义迭代器



WeekendDayIterator 是一个 Iterator 的周末天的javase / 8 / docs / api / java / util / Iterator.html http://www.joda.org/joda-time/apidocs/org/joda/time/Partial.Property.html =nofollow> 间隔 指定:

  class WeekendDayIterator(interval:Interval)extends Iterator [LocalDate] {
var day = interval .getStart.toLocalDate
private def peek = day.plusDays(1)
def hasNext:Boolean = peek.isBefore(interval.getEnd.toLocalDate)
private def isWeekend(ld:LocalDate): Boolean = ld.getDayOfWeek == SATURDAY || ld.getDayOfWeek == SUNDAY
def next():LocalDate = {val d = day;做天=偷看而(!isWeekend(day)); d}
}

def weekendLocalDates(interval:Interval):List [LocalDate] = new WeekendDayIterator(interval).toList

// The LocalDate周末日
println(weekendLocalDates(new Interval(new DateTime(2013-10-01),new DateTime(2014-01-30)))

//周末天的日子
println(weekendLocalDates(new Interval(new DateTime(2013-10-01),new DateTime(2014-01-30)))。map(_。getDayOfYear) )

导致以下输出:

 列表(2013-10-01,2013-10-05,2013-10-06,2013-10-12,2013-10-13,2013-10-19,2013- 10-20,2013-10-26,2013-10-27,2013-11-02,2013-11-03,2013-11-09,2013-11-10,2013-11-16,2013-11- 17,2013-11-23,2013-11-24,2013-11-30,2013-12-01,2013-12-07,2013-12-08,2013-12-14,2013-12-15, 2013-12-21,2013-12-22,2013-12-28,2013-12-29,2014-01-04,2014-01-05,2014-01-11,2014-01-12,2014- 01-18,2014-01-19,2014-01-25,2014-01-26)
列表(274,278,279,285,286,2 92,293,299,300,306,307,313,314,320,321,327,328, 12,18,19,25,26)

代码写在 Scala 。将其移植到Java应该很简单。


Interval interval = new Interval(new DateTime("2014-01-01"), new DateTime("2014-01-30"));

Is there a way to get the weekend days numbers?

something like:

interval.toPeriod.getWeekendDays();

解决方案

Custom Iterator

WeekendDayIterator is an Iterator of the weekend days in the Interval specified:

class WeekendDayIterator(interval: Interval) extends Iterator[LocalDate] {
  var day = interval.getStart.toLocalDate
  private def peek = day.plusDays(1)
  def hasNext: Boolean = peek.isBefore(interval.getEnd.toLocalDate)
  private def isWeekend(ld: LocalDate): Boolean = ld.getDayOfWeek == SATURDAY || ld.getDayOfWeek == SUNDAY
  def next(): LocalDate = { val d = day; do day = peek; while (!isWeekend(day)); d }
}

def weekendLocalDates(interval: Interval): List[LocalDate] = new WeekendDayIterator(interval).toList

// The `LocalDate`s for weekend days
println(weekendLocalDates(new Interval(new DateTime("2013-10-01"), new DateTime("2014-01-30"))))

// The days of year for weekend days
println(weekendLocalDates(new Interval(new DateTime("2013-10-01"), new DateTime("2014-01-30"))).map(_.getDayOfYear))

Resulting in the following output:

List(2013-10-01, 2013-10-05, 2013-10-06, 2013-10-12, 2013-10-13, 2013-10-19, 2013-10-20, 2013-10-26, 2013-10-27, 2013-11-02, 2013-11-03, 2013-11-09, 2013-11-10, 2013-11-16, 2013-11-17, 2013-11-23, 2013-11-24, 2013-11-30, 2013-12-01, 2013-12-07, 2013-12-08, 2013-12-14, 2013-12-15, 2013-12-21, 2013-12-22, 2013-12-28, 2013-12-29, 2014-01-04, 2014-01-05, 2014-01-11, 2014-01-12, 2014-01-18, 2014-01-19, 2014-01-25, 2014-01-26)
List(274, 278, 279, 285, 286, 292, 293, 299, 300, 306, 307, 313, 314, 320, 321, 327, 328, 334, 335, 341, 342, 348, 349, 355, 356, 362, 363, 4, 5, 11, 12, 18, 19, 25, 26)

The code is written in Scala. Porting it to Java should be straightforward.

这篇关于如何在间隔中获得周末? joda时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆