java 8 中的 java.sql.Date 的 LocalDateTime?
LocalDateTime to java.sql.Date in java 8?
如何在java-8中将LocalDateTime
转换为java.sql.Date
?
我在互联网上的搜索大多给我 Timestamp
相关代码或 LocalDate
到 java.sql.Date
。我正在寻找 LocalDateTime
到 java.sql.Date
。
LocalDateTime
和 java.sql.Date
之间没有直接关联,因为前者是时间戳,后者是日期。
但是LocalDate
和java.sql.Date
有关系,可以这样转换:
LocalDate date = //your local date
java.sql.Date sqlDate = java.sql.Date.valueOf(date)
对于任何给定的 LocalDateTime
都会给出以下代码:
LocalDateTime dateTime = // your ldt
java.sql.Date sqlDate = java.sql.Date.valueOf(dateTime.toLocalDate());
,我只想补充几点
A java.sql.Date
仅保留日、月和年值。 时间 值(小时、分钟、秒和毫秒)are all set to zero。因此,当将 LocalDateTime
转换为 java.sql.Date
时,这些字段将丢失。
如果您正在进行单向转换并且不介意丢失这些字段,那么这样做是可以的:
LocalDateTime dt = // LocalDateTime value
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
但如果以后要恢复原来的LocalDateTime
,最好把时间字段分开保存,这样就可以恢复了:
LocalDateTime dt = // your LocalDateTime
// save time information (hour, minute, seconds, fraction of seconds)
LocalTime savedTime = dt.toLocalTime();
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
// retrieve back the LocalDate (only day/month/year)
LocalDate localDate = date.toLocalDate();
// retrieve the LocalDateTime, with the original time values
LocalDateTime ldt = localDate.atTime(savedTime);
可以从 LocalDateTime 转换为 java.sql.date,同时保留时间部分,而不必通过使用 java.util.Date 作为中介来假设时区:
LocalDateTime dateValue = // your LocalDateTime
java.util.Date utilDate;
String dateFormat = "yyyy-MM-dd'T'HH:mm:ss";
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern(dateFormat);
SimpleDateFormat sdf1 = new SimpleDateFormat(dateFormat);
try {
utilDate = sdf1.parse(dateValue.format(dtf1));
} catch (ParseException e) {
utilDate = null; // handle the exception
}
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
如何在java-8中将LocalDateTime
转换为java.sql.Date
?
我在互联网上的搜索大多给我 Timestamp
相关代码或 LocalDate
到 java.sql.Date
。我正在寻找 LocalDateTime
到 java.sql.Date
。
LocalDateTime
和 java.sql.Date
之间没有直接关联,因为前者是时间戳,后者是日期。
但是LocalDate
和java.sql.Date
有关系,可以这样转换:
LocalDate date = //your local date
java.sql.Date sqlDate = java.sql.Date.valueOf(date)
对于任何给定的 LocalDateTime
都会给出以下代码:
LocalDateTime dateTime = // your ldt
java.sql.Date sqlDate = java.sql.Date.valueOf(dateTime.toLocalDate());
A java.sql.Date
仅保留日、月和年值。 时间 值(小时、分钟、秒和毫秒)are all set to zero。因此,当将 LocalDateTime
转换为 java.sql.Date
时,这些字段将丢失。
如果您正在进行单向转换并且不介意丢失这些字段,那么这样做是可以的:
LocalDateTime dt = // LocalDateTime value
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
但如果以后要恢复原来的LocalDateTime
,最好把时间字段分开保存,这样就可以恢复了:
LocalDateTime dt = // your LocalDateTime
// save time information (hour, minute, seconds, fraction of seconds)
LocalTime savedTime = dt.toLocalTime();
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
// retrieve back the LocalDate (only day/month/year)
LocalDate localDate = date.toLocalDate();
// retrieve the LocalDateTime, with the original time values
LocalDateTime ldt = localDate.atTime(savedTime);
可以从 LocalDateTime 转换为 java.sql.date,同时保留时间部分,而不必通过使用 java.util.Date 作为中介来假设时区:
LocalDateTime dateValue = // your LocalDateTime
java.util.Date utilDate;
String dateFormat = "yyyy-MM-dd'T'HH:mm:ss";
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern(dateFormat);
SimpleDateFormat sdf1 = new SimpleDateFormat(dateFormat);
try {
utilDate = sdf1.parse(dateValue.format(dtf1));
} catch (ParseException e) {
utilDate = null; // handle the exception
}
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());