簡體   English   中英

如何在 Scala 中逐步生成時間范圍 seq?

[英]How to generate a time range seq by step in Scala?

這是我的要求:

startAt: LocalDateTime(...)
endAt: LocalDateTime(...)
interval: Int

生成一個seq,如下所示:

Seq(startAt -> startAt.plusHours(interval), ... , startAt.plusMultHours() -> endAt)

現在,我正在將 LocalDateTime 轉換為 unix(Long) 並使用Range來完成此操作,有沒有更好的方法?

非常感謝!

您可以獲得兩個日期之間的小時數差異,創建一個范圍並映射它:

val result = (0L to ChronoUnit.HOURS.between(startAt, endAt) by interval)
    .map(startAt.plusHours(_))

這套西裝適合你嗎:

scala> val start = LocalDateTime.of(2021, 1, 1, 0, 0)
val start: java.time.LocalDateTime = 2021-01-01T00:00
                                                                                                                                                                           
scala> val end = LocalDateTime.of(2021, 1, 1, 3, 30)
val end: java.time.LocalDateTime = 2021-01-01T03:30
                                                                                                                                                                           
scala> val interval = 1
val interval: Int = 1                                                                                                                                                                          
                                                                                                                                                                           
scala> val seq = Iterator.iterate(start)(_.plusHours(interval)).takeWhile(end.isAfter).toSeq
val seq: Seq[java.time.LocalDateTime] = List(2021-01-01T00:00, 2021-01-01T01:00, 2021-01-01T02:00, 2021-01-01T03:00)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM