如何在休眠中使用时区保存特定格式的日期

发布于 2025-01-21 11:16:19 字数 774 浏览 0 评论 0原文

以前,我曾经写入数据库。

insert into test_table 
    (id, event_date, insert_date) 
values 
    (:id, 
    to_timestamp(:event_date, "YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM"), 
    to_timestamp(:insert_date, "YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM") AT TIME ZONE 'utc')

现在,我试图使用Hibernate重写将插入插入到数据库中。我写了实体,但我不知道如何指定正确的日期格式yyyy-mm-dd hh24:mi:ss.ff3tzh:tzm and “ yyyy-mm-dd hh24: MI:SS.FF3TZH:tzm“ in utc

@Entity
@Table(name = "test_table")
public class TestTable {
    @Id
    private Long id;

    //?
    private LocalDateTime eventDate;

    //?
    private LocalDateTime insertDate;
}

也是,我不确定我已经选择了正确的类型localDateTime。日期以我的身份出现在我身边。

如何以正确的格式保存日期?我使用PostgreSQL

Previously, I used to write to the database.

insert into test_table 
    (id, event_date, insert_date) 
values 
    (:id, 
    to_timestamp(:event_date, "YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM"), 
    to_timestamp(:insert_date, "YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM") AT TIME ZONE 'utc')

Now I'm trying to rewrite the insertion into the database using hibernate. I wrote Entity, but I don't know how to specify the correct date format YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM and "YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM" in UTC

@Entity
@Table(name = "test_table")
public class TestTable {
    @Id
    private Long id;

    //?
    private LocalDateTime eventDate;

    //?
    private LocalDateTime insertDate;
}

Also, I'm not sure I've chosen the right type LocalDateTime. The date comes to me as a string.

How do I save the date in the correct format? I use Postgresql

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黑色毁心梦 2025-01-28 11:16:19

要将字符串转换为LocalDateTime,您可以按照以下步骤

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");    
LocalDateTime dateTime = LocalDateTime.parse("2022-01-28T14:29:10.212", formatter);

将其转换为OffsetDateTime,您可以按照此步骤操作。

ZoneId zoneId = ZoneId.of("UTC");   // Or another geographic: Europe/Paris
ZoneId defaultZone = ZoneId.systemDefault();
ZoneOffset offset = zoneId.getRules().getOffset(dateTime);
OffsetDateTime offsetDateTime = OffsetDateTime.of(dateTime, offset);

To convert String to LocalDateTime you can follow this steps

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");    
LocalDateTime dateTime = LocalDateTime.parse("2022-01-28T14:29:10.212", formatter);

And to convert it into OffsetDateTime you can follow this steps.

ZoneId zoneId = ZoneId.of("UTC");   // Or another geographic: Europe/Paris
ZoneId defaultZone = ZoneId.systemDefault();
ZoneOffset offset = zoneId.getRules().getOffset(dateTime);
OffsetDateTime offsetDateTime = OffsetDateTime.of(dateTime, offset);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文