0

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

在我的 YAML 文件中,我定义了输入参数的格式,date-time如 Swagger 网页日期时间中所述 - RFC 3339 第 5.6 节定义的日期时间表示法,例如 2017-07-21T17:32:28Z

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

到目前为止,我已经尝试从 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格式的输入参数,而上面的示例没有产生。

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

4

1 回答 1

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

于 2020-08-27T18:17:51.007 回答