【问题标题】:Convert zoned timestamp to com.google.protobuf.Timestamp将分区时间戳转换为 com.google.protobuf.Timestamp
【发布时间】:2020-08-27 14:08:43
【问题描述】:

在我使用 Swagger 创建的自定义 API 中,我需要输入时间戳。

在我的 YAML 文件中,我将输入参数的格式定义为 date-time,正如 Swagger 网页 date-time – the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z 中提到的那样

我想将生成的分区时间戳转换为com.google.protobuf.Timestamp,但我不知道该怎么做,需要帮助。我正在使用 Kotlin。

到目前为止,我已经尝试从 StackOverflow 实现一些 Java 示例(在转换为 Kotlin 之后),例如:

System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
        .format(new Date()));

LocalDateTime withoutTimezone = zoneDateTime.toLocalDateTime();
Timestamp timestamp = Timestamp.valueOf(withoutTimezone));

这些示例似乎都不起作用,因为我需要com.google.protobuf.Timestamp 格式的输入参数,而上述示例不会导致。

任何关于如何转换时间戳的帮助将不胜感激。

【问题讨论】:

  • 你有没有尝试过?你能展示一下你的尝试吗?

标签: java kotlin timestamp rfc3339


【解决方案1】:

我还没有测试过,但是从阅读com.google.protobuf.Timestamp 文档来看,这似乎是一种选择:

    String exampleInput = "2020-08-27T20:13:10+02:00";
    Instant javaTimeInstant = OffsetDateTime.parse(exampleInput).toInstant();
    com.google.protobuf.Timestamp ts = com.google.protobuf.Timestamp.newBuilder()
           .setSeconds(javaTimeInstant.getEpochSecond())
           .setNanos(javaTimeInstant.getNano())
           .build();

我正在使用 Java。您可能可以自己手动翻译到 Kotlin?

文档链接: com.google.protobuf.Timestamp

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 2013-05-20
    • 2013-06-30
    • 2018-12-18
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多