我使用的是JodaTime 1.6.2。
我有一个需要转换为(Joda) LocalDateTime
的LocalDate
,或者是一个用于or的java.sqlTimestamp
。
原因是我已经知道了如何在LocalDateTime
和java.sql.Timestamp
之间进行转换
LocalDateTime ldt = new LocalDateTime();
DateTimeFormatter dtf = DateTimeFormatter.forPattern("yyyy-MM-dd HH:mm:ss");
Timestamp ts = Timestamp.valueOf(ldt.toString(dtf));
所以,如果我可以在LocalDate
和LocalDateTime
之间进行转换,那么我就可以继续转换为java.sql.Timestamp
。感谢您在正确方向上的任何推动!
发布于 2012-01-25 03:03:37
JodaTime
要将JodaTime的org.joda.time.LocalDate
转换为java.sql.Timestamp
,只需这样做
Timestamp timestamp = new Timestamp(localDate.toDateTimeAtStartOfDay().getMillis());
要将JodaTime的org.joda.time.LocalDateTime
转换为java.sql.Timestamp
,只需这样做
Timestamp timestamp = new Timestamp(localDateTime.toDateTime().getMillis());
JavaTime
要将Java8的java.time.LocalDate
转换为java.sql.Timestamp
,只需执行以下操作
Timestamp timestamp = Timestamp.valueOf(localDate.atStartOfDay());
要将Java8的java.time.LocalDateTime
转换为java.sql.Timestamp
,只需执行以下操作
Timestamp timestamp = Timestamp.valueOf(localDateTime);
发布于 2015-01-08 05:54:52
使用Java 8 time API的最佳方式:
LocalDateTime ldt = timeStamp.toLocalDateTime();
Timestamp ts = Timestamp.valueOf(ldt);
为了与你的模型(https://weblogs.java.net/blog/montanajava/archive/2014/06/17/using-java-8-datetime-classes-jpa)中的JPA一起使用:
@Converter(autoApply = true)
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime ldt) {
return Timestamp.valueOf(ldt);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp ts) {
return ts.toLocalDateTime();
}
}
所以现在是相对时区独立的时间。此外,它很容易做到:
LocalDate ld = ldt.toLocalDate();
LocalTime lt = ldt.toLocalTime();
格式化:
DateTimeFormatter DATE_TME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")
String str = ldt.format(DATE_TME_FORMATTER);
ldt = LocalDateTime.parse(str, DATE_TME_FORMATTER);
更新: postgres 9.4.1208,HSQLDB 2.4.0等无需任何对话即可理解Java 8 Time API!
发布于 2012-04-11 07:12:16
根据您的时区,您可能会损失几分钟(1650-01-01 00:00:00变成1649-12-31 23:52:58)
使用下面的代码来避免这种情况
new Timestamp(localDateTime.getYear() - 1900, localDateTime.getMonthOfYear() - 1, localDateTime.getDayOfMonth(), localDateTime.getHourOfDay(), localDateTime.getMinuteOfHour(), localDateTime.getSecondOfMinute(), fractional);
https://stackoverflow.com/questions/8992282
复制相似问题