Java中的哪种数据类型只能包含日期而不需要时间组件?例如,只是为了存储12/07/2012
.我正在将数据保存到具有仅日期数据类型的数据库中,因此我正在寻找Java中最佳的等效数据类型.
来自JDK java.sql.Date
::
一个围绕毫秒值的瘦包装器,允许JDBC将其标识为SQL DATE值.毫秒值表示自那以来经过的毫秒数
January 1, 1970 00:00:00.000 GMT
.为了符合SQL DATE的定义,
java.sql.Date
实例包含的毫秒值必须通过在与实例关联的特定时区中将小时,分钟,秒和毫秒设置为零来"标准化".
或来自JodaTime:DateMidnight
或LocalDate
(感谢@cdeszaq)
DateMidnight
定义时间组件在午夜固定的日期.该类使用时区,因此午夜是本地的,除非使用UTC时区.重要的是要强调这个类代表任何一天的午夜时间.请注意,午夜定义为00:00,即一天的开始.
其他答案已经过时了。
\n\n旧的日期时间类非常麻烦,应该避免。
\n\njava.time框架内置于 Java 8 及更高版本中。请参阅Oracle 教程。许多 java.time 功能向后移植到 Jave 6 和 7,并进一步适应 Android。
\n\n该类LocalDate
表示仅日期值,没有时间和时区。
LocalDate localDate = LocalDate.of( 2012 , 12 , 7 );\n
Run Code Online (Sandbox Code Playgroud)\n\n该方法使用标准ISO 8601toString
格式生成字符串。
\n\n\nlocalDate.toString() \xe2\x86\x92 2012-12-07
\n
对于其他格式,请使用DateTimeFormatter
.
符合JDBC 4.2 的JDBC 驱动程序可以使用getObject
和setObject
方法直接获取/传递 java.time 类型,例如LocalDate
SQL 类型DATE
。
如果您的驱动程序无法执行此操作,请转而使用 java.sql 类型。旧类中添加了新方法以方便转换。
\n\njava.sql.Date sqlDate = java.sql.Date.valueOf( localDate );\n
Run Code Online (Sandbox Code Playgroud)\n\n还有另一个方向。
\n\nLocalDate localDate = sqlDate.toLocalDate();\n
Run Code Online (Sandbox Code Playgroud)\n\n搜索 Stack Overflow 以获取更多有关使用 java.time 的讨论和示例。例如我对这个类似问题的回答。
\n 归档时间: |
|
查看次数: |
4953 次 |
最近记录: |