首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将LocalDate转换为LocalDateTime或java.sql.Timestamp

将LocalDate转换为LocalDateTime或java.sql.Timestamp
EN

Stack Overflow用户
提问于 2012-01-25 02:46:09
回答 5查看 241.9K关注 0票数 146

我使用的是JodaTime 1.6.2。

我有一个需要转换为(Joda) LocalDateTimeLocalDate,或者是一个用于or的java.sqlTimestamp

原因是我已经知道了如何在LocalDateTimejava.sql.Timestamp之间进行转换

代码语言:javascript
复制
LocalDateTime ldt = new LocalDateTime();
DateTimeFormatter dtf = DateTimeFormatter.forPattern("yyyy-MM-dd HH:mm:ss");
Timestamp ts = Timestamp.valueOf(ldt.toString(dtf));

所以,如果我可以在LocalDateLocalDateTime之间进行转换,那么我就可以继续转换为java.sql.Timestamp。感谢您在正确方向上的任何推动!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-25 03:03:37

JodaTime

要将JodaTime的org.joda.time.LocalDate转换为java.sql.Timestamp,只需这样做

代码语言:javascript
复制
Timestamp timestamp = new Timestamp(localDate.toDateTimeAtStartOfDay().getMillis());

要将JodaTime的org.joda.time.LocalDateTime转换为java.sql.Timestamp,只需这样做

代码语言:javascript
复制
Timestamp timestamp = new Timestamp(localDateTime.toDateTime().getMillis());

JavaTime

要将Java8的java.time.LocalDate转换为java.sql.Timestamp,只需执行以下操作

代码语言:javascript
复制
Timestamp timestamp = Timestamp.valueOf(localDate.atStartOfDay());

要将Java8的java.time.LocalDateTime转换为java.sql.Timestamp,只需执行以下操作

代码语言:javascript
复制
Timestamp timestamp = Timestamp.valueOf(localDateTime);
票数 297
EN

Stack Overflow用户

发布于 2015-01-08 05:54:52

使用Java 8 time API的最佳方式:

代码语言:javascript
复制
  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一起使用:

代码语言:javascript
复制
@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();
    }
}

所以现在是相对时区独立的时间。此外,它很容易做到:

代码语言:javascript
复制
  LocalDate ld = ldt.toLocalDate();
  LocalTime lt = ldt.toLocalTime();

格式化:

代码语言:javascript
复制
 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!

票数 64
EN

Stack Overflow用户

发布于 2012-04-11 07:12:16

根据您的时区,您可能会损失几分钟(1650-01-01 00:00:00变成1649-12-31 23:52:58)

使用下面的代码来避免这种情况

代码语言:javascript
复制
new Timestamp(localDateTime.getYear() - 1900, localDateTime.getMonthOfYear() - 1, localDateTime.getDayOfMonth(), localDateTime.getHourOfDay(), localDateTime.getMinuteOfHour(), localDateTime.getSecondOfMinute(), fractional);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8992282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档