我们有一个用例,其中我们有startDateTime,endDateTime和timeZoneOffset.

timeZoneOffset: UTC-2:30
Here the expected time is mentioned if timezoneOffset is in negative.

current time expected time after UTC adjustment
startDateTime: 2023-07-25T12:40:46.143Z 2023-07-25T10:10:46.143Z
endDateTime: 12023-07-25T12:54:05.558Z 2023-07-25T10:24:05.558Z

timeZoneOffset: UTC+2:30
Here the expected time is mentioned if timezoneOffset is in positive.

current time expected time after UTC adjustment
2023-07-25T12:43:05.558Z 2023-07-25T15:10:05.558Z
2023-07-25T12:54:05.558Z 2023-07-25T15:24:05.558Z

我们在LocalDateTimeZoneOffSet中寻找方法.但我们没有找到方法,我们可以用来获得预期的时间.

谁能推荐一下我们可以在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.

根据给定的例子,你正在try 的是像

  1. 给定UTC+0处的输入,找出给定区域偏移量下的等效时间
  2. 在不更改时间的情况下将区域更改回UTC+0

它可以使用以下工具来完成:

下面演示如何在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)
}

Java相关问答推荐

@从类文件中删除JsonProperty—Java

springboot start loge change

对于几乎不涉及逻辑的请求,您是否应该使用命令模式?

是否在允许数组元素为空时阻止 idea 为空性警告?

使用GridBagLayout正确渲染

将java.util.Date转换为OffsetDateTime

如何对多个字段进行分组和排序?

匹配一组字符或另一组字符

如何在代码中将行呈现在矩形前面?

从映射列表中检索所有键

从Spring6中的JPMS模块读取类时出现问题

Spring Validator批注不起作用

对角线填充二维数组

本机方法(JNI)总是编译的吗?

在ECLIPSE上的M1 Pro上运行JavaFX的问题

我该如何为我的类编写getter和setter方法?

无法在Java中获取ElastiCache的AWS CloudWatch指标

字符串的Gzip压缩在java11和java17中给出了不同的结果

在外部类和内部类之间,当调用外部类内部或外部的主方法时,它们的静态初始化程序的运行顺序不同

JAVA 正则表达式识别字符串string或字符串内的字符char