首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mapstruct从日期到LocalDatetime的转换

Mapstruct从日期到LocalDatetime的转换
EN

Stack Overflow用户
提问于 2022-05-26 09:52:40
回答 2查看 1.8K关注 0票数 1

我试图使用带有日期(java.util.Date)字段的Mapstruct映射程序将对象转换为具有LocalDateTime字段的对象。问题是它映射时间错误,因为在带有LocalDateTime字段的对象中,它总是少说两个小时。

代码语言:javascript
运行
复制
@Mapping(source = "createdDate", target = "createdLocalDateTime")
ObjectA toEntity(ObjectB);

我认为问题在于自动实现:

代码语言:javascript
运行
复制
if ( createdDate!= null ) {
        objectA.createdLocalDateTime( LocalDateTime.ofInstant( createdDate.toInstant(), ZoneId.of( "UTC" ) ) );
    }

我怎么才能解决这个问题?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-26 11:51:13

已经有在mapstruct问题跟踪器上对此进行讨论了。在那里,他们谈论失去一天,但原因和解决办法是相似的:

您可以做的并且非常简单的解决方案是提供您自己的日期到LocalDate之间映射的方式。 例如:

代码语言:javascript
运行
复制
public class DateUtils {

    public static LocalDate toLocalDate(Date date) {
        return date == null ? null : date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
    }

}

并确保DateUtils是Mapper#uses的一部分。这样,MapStruct将使用您的自定义函数在日期和LocalDate之间进行映射。

票数 3
EN

Stack Overflow用户

发布于 2022-05-26 10:06:17

一个基本的转换是

代码语言:javascript
运行
复制
 Date date= new Date();
 LocalDateTime localdate= date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

由于您没有发布您的转换代码,我们不知道您这方面发生了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72389940

复制
相关文章

相似问题

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