java date 转换sql date_如何将java.util.Date转换为java.sql.Date?

705b08b7ae201c02e8abe7d27fc10fbb.png

侃侃无极

如何将java.util.Date转换为java.sql.Date?别。这两门课都过时了。使用java.time类而不是遗留类java.util.Date & java.sql.Date使用JDBC 4.2或更高版本。如果与尚未更新的代码进行互操作,则转换为/从java.time转换为java.time。示例查询PreparedStatement.myPreparedStatement.setObject( 

    … ,                                         // Specify the ordinal number of which argument in SQL statement.

    myJavaUtilDate.toInstant()                  // Convert from legacy class `java.util.Date` (a moment in UTC) to a modern `java

    .time.Instant` (a moment in UTC).

        .atZone( ZoneId.of( "Africa/Tunis" ) )  // Adjust from UTC to a particular time zone, to determine a date. Instantiating a 

        `ZonedDateTime`.

        .toLocalDate()                          // Extract a date-only `java.time.LocalDate` object from the date-time

         `ZonedDateTime` object.)替代者:Instant而不是java.util.Date两者都代表了世界协调时的一个时刻。但是现在只有纳秒而不是毫秒。LocalDate而不是java.sql.Date这两种方法都表示一个日期纯值,不包括一天中的某个时间,也没有一个时区.细节如果您试图使用仅限日期的值(没有一天的时间,也没有时区),请使用LocalDate类而不是java.util.Date.java.time在Java 8和更高版本中,与Java早期版本捆绑在一起的麻烦的旧日期时间类已经被新的java.time包..看见Oracle教程..中的大部分功能都已移植到Java 6和7中。Threeten-Backport并进一步适应了ThreeTenABP.A SQL数据类型 DATE意味着只有约会,没有时间,没有时区。JAVA从来没有过这样一个类†,直到java.time.LocalDate在Java 8中,让我们根据特定的时区获取今天的日期来创建这样的值(例如,在确定日期时,时区在巴黎比Montréal更早)。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驱动程序遵守JDBC 4.2规范,您应该能够通过LocalDate通孔setObject在.上PreparedStatement若要存储到SQL日期字段中,请执行以下操作。myPreparedStatement.setObject( 1 , localDate );同样,使用ResultSet::getObject从SQLDate列获取到JavaLocalDate对象。在第二个参数中指定类将使您的代码类型安全.LocalDate localDate = ResultSet.getObject( 1 , LocalDate.class );换句话说,在JDBC4.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。通过Instant类,它表示UTC中时间线上的某个时刻。阿Instant在概念上与java.util.Date..但请注意Instant有一个决议纳秒当java.util.Date只有毫秒决议。若要进行转换,请使用添加到旧类中的新方法。例如,java.util.Date.from( Instant )和java.util.Date::toInstant.Instant instant = myUtilDate.toInstant();要确定日期,我们需要时区的上下文。在任何特定时刻,全球各地的日期都会因时区而异。应用aZoneId得到一个ZonedDateTime.ZoneId zoneId = ZoneId.of ( "America/Montreal" );ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );LocalDate localDate = 

zdt.toLocalDate();†java.sql.Date类假装只有日期,没有一天的时间,但实际上是吗?一天中的一段时间,调整到午夜时间。困惑?是的,以前的约会课糟透了。关于java.time这个java.time框架构建在Java 8及更高版本中。这些阶级取代了那个烦人的老人。遗产日期-时间类,如java.util.Date, Calendar, & SimpleDateFormat.这个尤达-时间项目,现在在维护模式,建议迁移到java.time上课。若要了解更多信息,请参见Oracle教程..并搜索堆栈溢出的许多例子和解释。规格是JSR 310.你们可以交换java.time对象直接使用数据库。用JDBC驱动程序符合JDBC 4.2或者晚些时候。不需要字符串,不需要字符串java.sql.*上课。在哪里获得java.time类?JavaSE 8, JavaSE 9, JavaSE 10,后来内置的。带有捆绑实现的标准JavaAPI的一部分。Java 9添加了一些次要的特性和修复。JavaSE 6和JavaSE 7中的大部分java.time功能都被移植到Java 6&7中。Threeten-Backport.安卓的android包实现的更高版本。java.time上课。对于早期的Android(<26),ThreeTenABP项目适应Threeten-Backport(上文所述)。看见如何使用ThreeTenaBP….这个三次-额外项目使用其他类扩展java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里发现一些有用的类,例如Interval, YearWeek, YearQuarter,和更多.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值