pan*_*nnu 3 java timestamp amazon-dynamodb
我必须存储在更新的时间dynamodb,经历的文档时dynamodb发现,如果我们将其存储在ISO 8601的格式,我们可以建立一个索引,但在应用程序我有java.sql.timestamp。我怎样才能转换它?
时间
第一个答案,不要使用java.sql.Timestamp. 这门课已经过时了。换一个Instant。Instant是 中的类之一java.time,现代 Java 日期和时间 API 也称为 JSR 310。该 API 比旧类更易于使用。假设inst是你的Instant:
String iso8601String = inst.toString();
System.out.println(iso8601String);
Run Code Online (Sandbox Code Playgroud)
在我的电脑上,这只是打印出来的
2017-12-13T11:04:59.282Z
Run Code Online (Sandbox Code Playgroud)
toString现代类的方法生成 ISO 8601 格式,这使您的任务非常容易。
转换您的时间戳
因为(据我所知)您Timestamp从遗留代码中获取对象,而您现在无法升级:首先要做的是将其转换为Instant. 然后你可以按照上面的方法进行。
我假设那ts是你的时间戳。如果您使用的是 Java 8 或更高版本:
String iso8601String = ts.toInstant().toString();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Java 6 或 7,则需要获取 ThreeTen Backport(链接如下)。这是 JSR 310 到上述 Java 版本的反向移植。由于在这些版本中,转换方法未内置到Timestamp类中,因此转换发生的方式略有不同,其他一切都相同。我没有测试以下代码行,所以请容忍任何错字。
String iso8601String = DateTimeUtils.toInstant(ts).toString();
Run Code Online (Sandbox Code Playgroud)
链接
我不确定您是否必须在这里进行任何重型手动提升,因为我希望一个好的司机能够处理这个问题。假设您确实需要手动转换为java.sql.timestamp符合 ISO 8601 的字符串,您可以尝试以下操作:
public String getISOTimestamp(java.sql.timestamp ts) {
Date date = new Date(ts.getTime());
String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String isoTS = sdf.format(date);
return isoTS;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |