java - 将 java.sql.Timestamp 转换为 java.util.Calendar ISO 8601 格式

标签 java timestamp amazon-dynamodb

我必须将更新的时间存储在 dynamodb , 在浏览 dynamodb 的文档时发现如果我们以 ISO 8601 格式存储它,我们可以建立一个索引。但在应用程序中我有 java.sql.timestamp .我怎样才能转换它?

最佳答案

java.time

第一个回答,不要用java.sql.Timestamp .这门课已经过时了。获取 Instant反而。 Instantjava.time 中的类之一,现代 Java 日期和时间 API,也称为 JSR 310。与旧类相比,该 API 更易于使用。假设 inst是你的 Instant :

    String iso8601String = inst.toString();
    System.out.println(iso8601String);

在我的电脑上,这只是打印出来的
2017-12-13T11:04:59.282Z
toString现代类的方法生成 ISO 8601 格式,这使您的任务非常容易。

转换您的时间戳

因为(据我所知)你得到你的 Timestamp您现在无法升级的遗留代码中的对象:首先要做的是将其转换为 Instant .然后你可以按照上面的方法进行。

我假设 ts是你的时间戳。如果您使用的是 Java 8 或更高版本:
    String iso8601String = ts.toInstant().toString();

如果您使用的是 Java 6 或 7,则需要获取 ThreeTen Backport(链接如下)。这是 JSR 310 向上述 Java 版本的反向移植。因为在这些版本中,转换方法没有内置在 Timestamp 中。类,转换发生的有点不同,其他一切都是一样的。我还没有测试以下代码行,所以请容忍任何错字。
    String iso8601String = DateTimeUtils.toInstant(ts).toString();

友情链接
  • ThreeTen Backport homepage
  • Java Specification Request (JSR) 310
  • Oracle tutorial trail: Date Time
  • 关于java - 将 java.sql.Timestamp 转换为 java.util.Calendar ISO 8601 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785994/

    相关文章:

    java - 如何使 Borderlayout 的 .CENTER 中的组件占据所有中心空间并随应用程序调整大小?

    java - 子请求的 CompletableFuture

    java - 如何使用 oozie 协调器延迟工作流操作

    r - 如何将时间戳转换为字符串(不更改时区)?

    json - 在 Go 中使用客户编码(marshal)函数与 dynamodbattributes.MarshalMap 进行类型

    java - 有什么简单的方法可以测试 @RequestBody 方法吗?

    powershell - Powershell当前时间减去特定格式的n秒

    SVN 提交旧日期/时间

    reactjs - 如何使用 DynamoDB 后端实现 React 分页前端

    java - 我如何才能为向 DynamoDB 的大规模迁移实现更好的吞吐量?