我们有一个用例,其中有 startDateTime、endDateTime 和 timeZoneOffset。
时区偏移:UTC-2:30
如果 timezoneOffset 为负数,这里提到了预期时间。
当前时间 | UTC调整后预计时间 |
---|---|
开始日期时间:2023-07-25T12:40:46.143Z | 2023-07-25T10:10:46.143Z |
结束日期时间:12023-07-25T12:54:05.558Z | 2023-07-25T10:24:05.558Z |
时区偏移:UTC+2:30
如果 timezoneOffset 为正,这里提到了预期时间。
当前时间 | UTC调整后预计时间 |
---|---|
2023-07-25T12:43:05.558Z | 2023-07-25T15:10:05.558Z |
2023-07-25T12:54:05.558Z | 2023-07-25T15:24:05.558Z |
我们正在寻找LocalDateTime、ZoneOffSet中的方法。但我们没有找到可以用来获得预期时间的方法。
有人可以建议我们可以在 Java/Kotlin 中使用哪些库来获得预期的结果吗?
我期望在使用 UTC 值调整后以日期时间格式输出。我们想要将日期时间转换为本地时间。
我们有以下代码片段供您参考:
var timeZoneOffset: String? = null
timeZoneOffset: "UTC-08:00"
var startDateTime: LocalDateTime? = null
startDateTime: 2023-07-25T12:40:46.143Z
var endDateTime: LocalDateTime? = null
endDateTime: 2023-07-25T12:43:05.558Z
不太清楚为什么你在
LocalDateTime
中表示 2023-07-25T12:54:05.558Z,因为 Z 表示 UTC+0,所以应该是 ZonedDateTime
。
根据给定的示例,您正在尝试的是
可以使用以下方法完成:
下面演示如何在 kotlin 中实现这样的调整。
import java.time.ZoneOffset
import java.time.ZonedDateTime
fun main() {
val timeZoneOffset = "UTC-02:30"
val zoneOffset = ZoneOffset.of(timeZoneOffset.replace("UTC", ""))
val startDateTime: ZonedDateTime = ZonedDateTime.parse("2023-07-25T12:40:46.143Z")
println(adjustZone(startDateTime, zoneOffset))
val endDateTime: ZonedDateTime = ZonedDateTime.parse("2023-07-25T12:43:05.558Z")
println(adjustZone(endDateTime, zoneOffset))
}
fun adjustZone(zonedDateTime: ZonedDateTime, zoneOffset: ZoneOffset)
: ZonedDateTime {
return zonedDateTime
.withZoneSameInstant(zoneOffset)
.withZoneSameLocal(zonedDateTime.zone)
}