我需要一个java.sql.Timestamp,但是当我尝试从LocalDateTime转换时,它失败,因为当输入字符串转换为LocalDateTime时,字母“T”被添加,如2013-03-15T00:00:00.000。有任何想法吗?还是有更好的方法将字符串转换为时间戳?我只是想在未来需要操纵时间的情况下使用乔达。joda-time-2.2将LocalDateTime转换为java.sql.Timestamp
谢谢。
我需要一个java.sql.Timestamp,但是当我尝试从LocalDateTime转换时,它失败,因为当输入字符串转换为LocalDateTime时,字母“T”被添加,如2013-03-15T00:00:00.000。有任何想法吗?还是有更好的方法将字符串转换为时间戳?我只是想在未来需要操纵时间的情况下使用乔达。joda-time-2.2将LocalDateTime转换为java.sql.Timestamp
谢谢。
你为什么不能做
LocalDateTime ldt = LocalDateTime.now();
Timestamp ts = new Timestamp(ldt.toDate().getTime());
的最佳方式使用Java 8时API:
LocalDateTime ldt = timeStamp.toLocalDateTime();
Timestamp ts = Timestamp.valueOf(dateTime);
对于JPA使用把与你的模型(https://weblogs.java.net/blog/montanajava/archive/2014/06/17/using-java-8-datetime-classes-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);
您是否使用了ORM框架?通常你不会显式地转换为'java.sql'类型,但让框架为你做。 – Zutty 2013-03-15 13:11:48