好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
怎么把java.util.Data转换成java.sql.Data? 关闭 返回上一级  

怎么把java.util.Data转换成java.sql.Data?
+ 查看更多

发布日期:2018-03-08 17:59
分类:JAVA
浏览次数:278
我输入java.util.Data并想用他进行查询,所以我需要java.sql.Data。
我发现他俩之间不能进行隐式或显式的转换,但是因为我对Java API还不太熟,所以还不知道该怎么做。

回答

如果你只想使用日期值(没有时间,没有时区),就使用LocalDate类而不是java.util.Date。
java.time
在Java 8以及朝后版本,java.time.package取代了以往Java版本中的繁琐的时间类。参阅Oracle教程,大部分功能已经被ThreeTen-Backport的Java 6和7支持,并进一步适用于ThreeTenABP中的Android。一个SQL data typeDATE就是只有日期,没有时间和时区。Java在出现Java 8的java.time.LocalDate之前还没有如此精确的时间类,让我们根据时区来得到今天的日期(时区决定很重要,例如巴黎的新一天的黎明比蒙特利尔更早一些)
LocalDate todayLocalDate = LocalDate.now( ZoneId.of( "America/Montreal" ) );  // Use proper "continent/region" time zone names; never use 3-4 letter codes like "EST" or "IST".
如果你的JDBC driver遵守JDBC 4.2 spec,你可以用PreparedStatement通过setObject把LocalDate存到SQL DATE区。
myPreparedStatement.setObject( 1 , localDate );
同样的,使用getObject提取SQL DATE个数存到Java LocalDate对象中
LocalDate localDate = myPreparedStatement.getObject( 1 );
换句话说,这整个问题在JDBC 4.2或更高版本都是无关紧要的。
如果你的JDBC驱动器不能实现这种方式,你需要追溯到去转换java.sql类型。
转换成 java.sql.Date
转换的话,把新方法加到旧的时间类中。我们可以调用java.sql.Date.valueOf(…)去转换LocalDate
java.sql.Date sqlDate = java.sql.Date.valueOf( todayLocalDate );
另个方式
LocalDate localDate = sqlDate.toLocalDate();
从 java.util.Date转换
虽然你应该避免使用旧的日期时间类,但在使用现有代码时可能会被迫使用。 如果是这样,您可以转换为/从java.time。通过Instance类,可以展现UTC时间表上的某一时刻。Instance想法上和java.util.Date不谋而合。但请注意,Instant具有高达纳秒的分辨率,而java.util.Date只有毫秒的分辨率。
把新方法加到老的类中去转换,例如,java.util.Date.from( Instant ) 和java.util.Date::toInstant.
Instant instant = myUtilDate.toInstant();
去决定一个日期,我们需要时区。对于任何给定的时刻,日期根据时区在全球各地变化。提供一个ZoneId去得到一个ZonedDateTime.
ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
LocalDate localDate = zdt.toLocalDate();
†java.sql.Date类表面上是没有时间的日期,但实际上是一个时间,只是调整为午夜时间。 混乱? 是的,旧的日期时间类是很乱。
上一篇在Java中我如何获得当前的UTC或者GMT日期和时间?
Java:将List转换为String下一篇
下一篇Java:将List转换为String

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号