Creating a dateRange Scala, Joda, Java

后端 未结 5 540
生来不讨喜
生来不讨喜 2020-12-16 01:34

I have spent hours trying to make this next piece of code work.

import org.joda.time.{DateTime, Period}


def dateR         


        
5条回答
  •  轮回少年
    2020-12-16 02:09

    I was needing something similar. Here's what I came up with:

    import org.joda.time.{Period, DateTime}
    
    class DateRange(val start: DateTime, val end: DateTime, val step: Period, inclusive: Boolean) extends Iterable[DateTime] {
        override def iterator: Iterator[DateTime] = new DateRangeIterator
    
        class DateRangeIterator extends Iterator[DateTime] {
            var current = start
    
            override def hasNext: Boolean = current.isBefore(end) || (inclusive && current == end)
    
            override def next(): DateTime = {
                val returnVal = current
                current = current.withPeriodAdded(step, 1)
                returnVal
            }
        }
    }
    

    Example Usage:

    val startOfDay: DateTime = new DateTime().withTimeAtStartOfDay()
    val endOfDay: DateTime = startOfDay.plusDays(1)
    val dateRange = new DateRange(startOfDay, endOfDay, Period.hours(1), false)
    for (d <- dateRange) println(d)
    

    Output:

    2015-03-16T00:00:00.000-05:00
    2015-03-16T01:00:00.000-05:00
    2015-03-16T02:00:00.000-05:00
    2015-03-16T03:00:00.000-05:00
    2015-03-16T04:00:00.000-05:00
    2015-03-16T05:00:00.000-05:00
    2015-03-16T06:00:00.000-05:00
    2015-03-16T07:00:00.000-05:00
    2015-03-16T08:00:00.000-05:00
    2015-03-16T09:00:00.000-05:00
    2015-03-16T10:00:00.000-05:00
    2015-03-16T11:00:00.000-05:00
    2015-03-16T12:00:00.000-05:00
    2015-03-16T13:00:00.000-05:00
    2015-03-16T14:00:00.000-05:00
    2015-03-16T15:00:00.000-05:00
    2015-03-16T16:00:00.000-05:00
    2015-03-16T17:00:00.000-05:00
    2015-03-16T18:00:00.000-05:00
    2015-03-16T19:00:00.000-05:00
    2015-03-16T20:00:00.000-05:00
    2015-03-16T21:00:00.000-05:00
    2015-03-16T22:00:00.000-05:00
    2015-03-16T23:00:00.000-05:00
    

提交回复
热议问题