从转换到joda.Datetime是time.LocalDateTime正确的方式?

问题描述 投票:1回答:1

我需要为我的数据库日期时间戳格式。现在我有joda.Datetime在数据库中,而且在我的RESTAPI应用。

我试图创建一个新的列,其他列time.LocalDateTime转换现有joda.Datetime。此外,我换成与time.LocalDateTime所有代码joda.DateTime。

它的工作原理,但是当我在做邮递员get调用,我收到一个JSON,如:

{
seconds: x1,
minutes: x2,
hours: x3,
days: x4,
........
}

我想我需要一个转换器,以显示时间戳“DD-MM-YY HH-MM-SS”

我想在数据库中的时间戳格式能够执行SQL规范运作和命名查询的时间。

在我的数据库我有bytea类型的日期。我使用PostgreSQL与DBeaver

这是正确的方式,或者你可以给我推荐另一种选择?

java datetime time jodatime joda-convert
1个回答
0
投票

这是正确的方式,或者你可以给我推荐另一种选择?

如果没有与PostgreSQL的经验,我应该说,bytea是您的日期或时间戳错误的数据类型。 timestamp with time zone是好的,支持SQL操作和查询。它还具有直接,你可以存储OffsetDateTime优势(甚至Instant,我不知道),这样你就可以避免格式化你的时间戳一起保存。这会被推荐。

一时间戳记是时间戳记日期和时间是不够的。当天的日期和时间将在不同的时区不同来解释(当夏令时结束,即使是在秋季暧昧和时钟向后开启)。至于我明白timestamp with time zone将确保时间戳存储在UTC,所以将在时间点明确。在Java中的Instant类表示时间独立的时区的一个点,因此是良好的时间戳。一些JDBC驱动程序允许您直接存储的Instanttimestamp with time zone列,有些则需要你转换先OffsetDateTime。在后者的情况下使用

OffsetDateTime dateTimeForDatabase = yourInstant.atOffset(ZoneOffset.UTC);

编辑:请注意,with time zone位有点骗人的,如@乔恩飞碟双向的评论指出。该数据库未存储时区或偏差,它只是可以确保日期和时间存储在UTC约在时间点移除歧义。

链接:Date/Time Types in the PostgreSQL docs

© www.soinside.com 2019 - 2024. All rights reserved.