java - 来自 LocalDate 和字符串的 Joda LocalDateTime
问题描述
我有:
- joda
LocalDate
,所以它没有时间信息,只有日期 - 包含时间和区域信息的字符串,例如
"14:20 CEST"
它们中的任何一个都可以不存在(Scala 的Option
)。
如何将这两者结合起来得到 joda LocalDateTime
,即仅代表日期和时间而没有时区的实体?
解决方案
要结合这两个选项,自然的方法是使用flatMap
这样的方法:
val onlyDateOption: Option[LocalDate] = ???
val timeAndZoneOption: Option[String] = ???
val result: Option[LocalDateTime] = onlyDateOption.flatMap { onlyDate =>
timeAndZoneOption.map { timeAndZone =>
// Some logic here to build the LocalDateTime from onlyDate and timeAndZone
}
}
也可以用for-comprehension
更易读的方式编写:
val result: Option[LocalDateTime] = for {
onlyDate <- onlyDateOption
timeAndZone <- timeAndZoneOption
} yield {
// Some logic here to build the LocalDateTime from onlyDate and timeAndZone
}
现在,如何使用 Joda 来构建您所期望的可能可以通过各种不同的方式完成,其中一种可能是:
onlyDate
.toLocalDateTime(LocalTime.MIDNIGHT)
.withHourOfDay(...) // hour extracted from the string somehow
.withMinuteOfHour(...) // minute extracted from the string somehow
我不熟悉 Joda API,可能还有另一种更简单的方法
推荐阅读
- azure - IoT Edge 模块之一处于退避状态 Raspberry Pi 4 with Raspbian OS
- javascript - 为什么我的 Javascript 无法使用 Tag Game firebase
- c# - C# .NET Core 3.1 Entity Framework:包括使用 where 条件给出错误输出
- javascript - 无法获取 ajax 表单数据以使用 nodemailer 提交
- vue.js - 如果有人尝试在本地存储数据中编辑它不会反映在我的 UI 中,如何将购物车数据存储在本地存储和应用程序中
- javascript - React GET 方法不呈现最新帖子
- sql - PostgreSQL:计算平均处理时间
- php - 另一个项目的 PHP get_declared_classes()
- go - 从嵌入式结构中迭代结构值
- javascript - 为什么底部的代码没有执行?