Java日期和时间戳
考虑以下代码:-Java日期和时间戳,java,date,timestamp,Java,Date,Timestamp,考虑以下代码:- String t = "2013-10-05 09:10:37.029074"; Timestamp ts = Timestamp.valueOf(t); Date d = new Date(ts.getTime()); Timestamp ts2 = new java.sql.Timestamp(d.getTime()); System.out.println("ts -->"+ts);
String t = "2013-10-05 09:10:37.029074";
Timestamp ts = Timestamp.valueOf(t);
Date d = new Date(ts.getTime());
Timestamp ts2 = new java.sql.Timestamp(d.getTime());
System.out.println("ts -->"+ts);
System.out.println("ts2-->"+ts2);
当我运行这个时,我得到的结果是
ts -->2013-10-05 09:10:37.029074 ts2-->2013-10-05 09:10:37.029
我不想忽略milisecods(请参见029074和029之间的差异)。似乎是四舍五入
我甚至想保留分数。日期类的精度只有毫秒。它无法存储更高的精度 : 类日期表示特定的时间瞬间,精度为毫秒
Date
类只有毫秒精度。它无法存储更高的精度
:
类日期表示特定的时间瞬间,精度为毫秒
时间戳
具有精度。两者的精度都只有毫秒。一旦你将日期
带入游戏,你将失去精准度
因此,只需保留
时间戳
,并用getTime
抓住它的毫秒,做任何你需要做的事情,但要确保你抓住它。时间戳
具有精确性。两者的精度都只有毫秒。一旦你将日期
带入游戏,你将失去精准度
因此,只需保留时间戳
,并用getTime
抓住它的毫秒,做任何你需要做的事情,但要确保你抓住它。tl;博士
这两个麻烦的Date
和Timestamp
类现在都被java.time.Instant
取代
Instant.now()
.toString()
2018-04-04T21:33:37.889228Z
java.time
和都是正确的,您已经遇到了这些类中设计的限制
而且,这些类很麻烦、令人困惑并且有缺陷。它们已被java.time类取代。无需再次使用java.util.Date
或java.sql.Timestamp
java.util.Date
类表示UTC时间轴上的一个时刻,分辨率为。该类现在也被替换为,但具有更高的分辨率
特别是在Java8中,捕获当前时刻被限制为毫秒,尽管Instant
类能够保持纳秒。在Java9和更高版本中,的新实现允许以更高的分辨率捕获当前时刻,尽管受到主机操作系统和硬件能力的限制。在macOS Sierra上的OracleJDK9.0.4中,我看到的是微秒
瞬间。现在()。toString():2018-04-04T21:33:37.889228Z
从JDBC 4.2及更高版本开始,java.sql.Timestamp
类也被Instant
取代。现在,您可以直接交换java.time类,而不必考虑java.sql类型
myPreparedStatement.setObject( … , instant ) ;
……还有
Instant instant = myResultSet.getObject( … , Instant.class ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类
从哪里获得java.time类
- ,及以后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(tl;dr
这两个麻烦的
和Date
类现在都被Timestamp
取代java.time.Instant
2018-04-04T21:33:37.889228Z java.time 和都是正确的,您已经遇到了这些类中设计的限制 而且,这些类很麻烦、容易混淆并且有缺陷。它们已经被java.time类所取代。无需再次使用Instant.now() .toString()
或java.util.Date
java.sql.Timestamp
类表示UTC时间轴上的一个时刻,分辨率为。该类现在被替换为,也是中的一个时刻,但分辨率更高 特别是在Java 8中,捕获当前时刻被限制为毫秒,尽管java.util.Date
类能够保持纳秒。在Java 9和更高版本中,的新实现允许以更高的分辨率捕获当前时刻,尽管受主机操作系统和硬件的能力限制。在Oracle JDK 9.0.4中在macOS Sierra上,我看到的是微秒 瞬间。现在()。toString():2018-04-04T21:33:37.889228Z 从JDBC 4.2及更高版本开始,Instant
类也被java.sql.Timestamp
取代。现在您可以直接交换java.time类,而不用考虑java.sql类型Instant
……还有myPreparedStatement.setObject( … , instant ) ;
Instant instant = myResultSet.getObject( … , Instant.class ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
classes 从哪里获得java.time类java.sql.*
- ,及以后
- 内置的
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(如果必须保持微秒精度,
- ,及以后