scala - Scala 中 ZonedDateTime 的排序
问题描述
我有以下 ZonedDateTime 列表,它基本上是从 Scala 中的 xml 字段中读取的:
var timestamps = List[ZonedDateTime]()
timestampNodes.foreach(node => timestamps = timestamps :+ ZonedDateTime.parse(node.text, DateTimeFormatter.ISO_OFFSET_DATE_TIME))
对时间戳列表进行排序以便条目从最旧到最新排序的最佳和最快方法是什么?
解决方案
实施Ordering
forZonedDateTime
并且您可以使用List.sorted
:
import java.time._
import scala.math.Ordering.Implicits._
implicit val zonedDateTimeOrdering: Ordering[ZonedDateTime] =
_ compareTo _
val base = ZonedDateTime.of(
LocalDate.of(2021, 1, 1),
LocalTime.MIDNIGHT,
ZoneOffset.UTC
)
List(
base.plusHours(1),
base.plusHours(4),
base.plusHours(2)
).sorted // ==> a list with oldest first
已使用 Scala 2.13 进行测试,但应适用于 Scala 2.12 及更高版本。
奖金
添加导入,您可以将 ZonedDateTime 变量与<
、<=
、>
等进行比较。
import scala.math.Ordering.Implicits._
base <= base.plusMinutes(10) // ==> true
推荐阅读
- c# - 音频和视频不同步?
- wordpress -
语句破坏了 Rewrite* 规则 - javascript - 使用 Axios 对 NodeJS 进行身份验证
- python - 无法安装 matplotlib,因为“六”是 distutils
- junit - junits 使用 easymock 失败
- c# - c# process.start 不启动进程
- javascript - 选择选项并使用 html 将结果传递给其他选择选项
- python - 使用 nltk 过滤三元组标签
- python - 我的 Scrapy 函数永远不会被调用。我想念什么
- javascript - Content Editable = true,但一次只取一个值