我必须将更新的时间存储在 dynamodb
, 在浏览 dynamodb
的文档时发现如果我们以 ISO 8601 格式存储它,我们可以建立一个索引。但在应用程序中我有 java.sql.timestamp
.我怎样才能转换它?
最佳答案
java.time
第一个回答,不要用java.sql.Timestamp
.这门课已经过时了。获取 Instant
反而。 Instant
是 java.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();
友情链接
关于java - 将 java.sql.Timestamp 转换为 java.util.Calendar ISO 8601 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785994/