aks*_*hay 15 java timestamp date
我可以在Java中使用哪种数据类型来保存当前日期和时间?我想将日期时间存储在数据库中,并在java bean中有一个字段来保存它.
是java.util.Date吗?
Rup*_*pok 11
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
private String getDateTime() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
return dateFormat.format(date);
}
Run Code Online (Sandbox Code Playgroud)
Java 8和更高版本中内置的java.time框架取代了与最早的Java版本捆绑在一起的旧日期时间类和Joda-Time库。java.time类已反向移植到Java 6和7以及Android。
本Instant类表示UTC时间线与纳秒的分辨率上一会儿。
Instant instant = Instant.now();
Run Code Online (Sandbox Code Playgroud)
应用从UTC偏移(数小时以及可能的分钟和秒)以获取OffsetDateTime。
ZoneOffset offset = ZoneOffset.of( "-04:00" );
OffsetDateTime odt = OffsetDateTime.ofInstant( instant , offset );
Run Code Online (Sandbox Code Playgroud)
更好的方法是应用一个全时区,该时区是一个偏移量以及一组用于处理异常的规则,例如夏令时(DST)。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Run Code Online (Sandbox Code Playgroud)
希望可以将JDBC驱动程序更新为可直接与java.time类一起使用。在此之前,我们必须使用java.sql类将日期时间值移入/移出数据库。但是将您对java.sql类的使用限制为繁琐的数据库传输。不要将它们用于业务逻辑。作为旧的日期时间类的一部分,它们的设计不佳,令人困惑且麻烦。
使用添加到旧类中的新方法来与java.time进行相互转换。寻找to…和valueOf方法。
使用java.sql.Timestamp该类作为日期时间值。
java.sql.Timestamp ts = java.sql.Timestamp.valueOf( instant );
Run Code Online (Sandbox Code Playgroud)
并朝着另一个方向…
Instant instant = ts.toInstant();
Run Code Online (Sandbox Code Playgroud)
对于日期时间数据,您实际上总是需要TIMESTAMP WITH TIME ZONE数据类型,而不是WITHOUT在数据库中设计表列时。