myPreparedStatement // Using a `PreparedStatement` avoids SQL-injection security risk.
.setObject( // As of JDBC 4.2, we can exchange java.time objects with a database via `getObject`/`setObject` methods.
… , // Indicate which `?` placeholder in your SQL statement.
OffsetDateTime.now( ZoneOffset.UTC ) // Capture the current moment in UTC.
) ;
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ; // Same moment, same point on the timeline, different wall-clock time.
OffsetDateTime utc = OffsetDateTime.now(ZoneOffset.UTC);
String sql_date = utc.format(DateTimeFormatter.ofPattern("MM/dd/yyyy")); //here, you can change the format of SQL date as you need
2条答案
按热度按时间ymzxtsji1#
热释光;博士
java.time文件
现代的解决方案使用多年前的java.time类取代了糟糕的老式日期时间类。
获取utc中的当前时刻,使用
OffsetDateTime
.MySQL8.0使用微秒的分辨率,即小数点后的6位。time类具有更好的纳秒分辨率。因此,您可能需要从您的
OffsetDateTime
. 使用指定所需的分辨率ChronoUnit
.通过
PreparedStatement
类似于sql标准的类型的列TIMESTAMP WITH TIME ZONE
数据类型。对于mysql 8.0,这就是TIMESTAMP
.通过一个
ResultSet
.要通过某个特定地区(时区)的人们使用的挂钟时间来观察这一时刻,请应用
ZoneId
得到一个ZonedDateTime
对象。关于java.time
java.time框架内置于Java8及更高版本中。这些类取代了旧的遗留日期时间类,例如
java.util.Date
,Calendar
, &SimpleDateFormat
.现在处于维护模式的joda time项目建议迁移到java.time类。
要了解更多信息,请参阅oracle教程。和搜索堆栈溢出的许多例子和解释。规格为jsr 310。
您可以直接与数据库交换java.time对象。使用符合jdbc 4.2或更高版本的jdbc驱动程序。不需要线,不需要线
java.sql.*
班级。从哪里获得java.time类?
JavaSE8、JavaSE9、JavaSE10、JavaSE11及更高版本—标准JavaAPI的一部分,带有捆绑实现。
Java9添加了一些次要的特性和修复。
java se 6和java se 7
大部分java.time功能都是通过三个十个后端口后端口移植到Java6和Java7的。
安卓
android包java.time类的更高版本实现。
对于早期的android(<26),threetenabp项目采用了threeten backport(如上所述)。了解如何使用threetenabp…。
threeten额外的项目用额外的类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如
Interval
,YearWeek
,YearQuarter
,等等。7hiiyaii2#
您可以按以下步骤进行:
您需要按如下方式导入类:
希望有帮助。