【发布时间】:2017-11-13 08:47:23
【问题描述】:
我有两个 timestamp 对象。
java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("1800-01-01 00:00:00.0");
System.out.println(timestamp);
Timestamp ctimestamp = new Timestamp(System.currentTimeMillis());
System.out.println(ctimestamp);
System.out.println(ctimestamp.getYear() - timestamp.getYear());
输出:
1800-01-01 00:00:00.0
2017-11-13 11:42:44.56
217
它可以工作并给出适当的 217 值。这里的问题是 getYear() 已弃用。
有没有其他方法可以获得它,这样我就不会收到任何弃用警告?
【问题讨论】:
-
您是否尝试过使用日历类或本地日期?
-
@dan6657,第一个时间戳来自数据库。因此,上述 sn-p 仅用于测试目的。我必须创建一个新的当前时间戳才能获得差异
-
你检查了吗:Period and duration
-
为什么?
Timestamp基本上是 ODBC 的 POJO。 (实际上是java.util.Date的一个包装器。但是您应该将其转换为java.time.*实例以使用新的时间API。您可以使用toLocalDateTime(没有时间写完整的答案...)跨度> -
@Yakhoob 较新的 JDBC 驱动程序 (JDBC 4.2) 或其他从数据库获取数据的较新方法将很乐意将数据库中的时间戳作为
Instant提供给您。这是你应该想要的。您没有理由坚持使用早已过时的类型。