【问题标题】:How to convert OffsetDateTime to Date with time如何将 OffsetDateTime 转换为带时间的日期
【发布时间】:2018-07-31 06:19:22
【问题描述】:

我有 offsetdatetime 字段,我想转换为日期字段。我用过

val submissionDate:OffSetDateTime = OffsetDateTime.ofInstant(Instant.now(), ZoneOffset.UTC)
val date = Date.from(submissionDate.toInstant())

此转换返回没有时间详细信息的日期。我是否必须手动将时间设置到 date 字段中,例如 hh:mm::ss 或那里的任何其他内置函数。

【问题讨论】:

  • 如果您确实需要 Date,例如对于您现在不想更改的旧版 API,为什么不直接使用 Date.from(Instant.now()) 甚至 new Date()?如果您不需要旧 API 的 Date,请避免使用该类,因为它已过时。只使用现代 API java.time。

标签: date kotlin datetimeoffset


【解决方案1】:

这种转换不应该起作用 - 就我在 IDE 和文档中看到的而言,没有直接采用 OffsetDateTimeDate.from 方法。

但是,将Instant 传递给Date.from 对我来说效果很好(因为它保留了时间信息),例如:

val submissionDate: OffsetDateTime = OffsetDateTime.ofInstant(Instant.now(), ZoneOffset.UTC)
val date = Date.from(submissionDate.toInstant())
println(date) // Tue Jul 31 08:26:31 CEST 2018

【讨论】:

  • 谢谢,是的,你是对的。我只传递到Instant。那是拼写错误。但我现在尝试了简单的测试,它也适用于我。让我检查一下我的项目。为什么它不起作用?
  • 我的项目中有这个日期'2018-07-30T18:30Z'。这是创建问题吗?
  • 让我猜猜,@bNd,你在印度还是斯里兰卡?然后 2018-07-30T18:30Z 等于您当地时间的 2018-07-31T00:00,这是 Date.toString 打印的内容,因此您将看到一天中的时间 00:00。这是正确和预期的。时间到了,现在是 00:00。
【解决方案2】:

将您的提交日期转换为即时

val submissionDate = OffsetDateTime.ofInstant(Instant.now(), ZoneOffset.UTC)
val date = Date.from(submissionDate.toInstant())
println(date)//Tue Jul 31 12:05:36 IST 2018

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 2022-12-17
    • 2015-08-19
    • 2011-04-14
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多