当前位置: 首页 > 知识库问答 >
问题:

将整数值转换为 LocalDateTime

殷建弼
2023-03-14

我想将时间间隔配置存储到数据库中,如下所示:

12 hours -> 43200
24 hours -> 86400
42 hours -> 172800
72 hours -> 259200

但是我不知道如何将例如值86400转换为LocalDateTime,因为我想使用此值来计算SQL查询的时间间隔。

将此值转换为LocaLDateTime的正确方法是什么?

共有1个答案

鲜于仰岳
2023-03-14

我建议:在您的SQL数据库中,要么使用适当的数据类型来表示时间量、持续时间,要么使用ISO 8601格式的char来保存持续时间。在Java中使用< code>Duration(从不使用< code>LocalDateTIme)。

如果您的数据库在一段时间内具有数据类型,请考虑使用 is,但要权衡利弊。这可能意味着您必须将持续时间值作为文本字符串传入和传出数据库,这并不理想。一些RDBMS声称他们的时间数据类型既可以在一天中的某个时间使用,也可以在一段时间内使用,但是如果您的数据库很乐意将72小时显示为72:00而不是259200,这绝对是一个优势。

如果您不能或不想使用合适的数据库数据类型,我的第二个建议是ISO 8601字符串。持续时间的ISO 8601格式为< code > PT12H (12小时;读为12小时的时间段)。72小时可以给定为< code>P3D或< code>PT72H(假设我们可以安全地将72小时转换成3天;这并不总是正确的)。虽然这种格式看起来有点奇怪,但我仍然觉得它比< code>259200更易读。< code>varchar(13)左右应该可以满足您的需求。

在Java中使用< code>Duration。如果数据库中的持续时间为< code>72:00,请搜索如何将其解析为< code>Duration,并再次搜索如何将其格式化。如果它以< code>PT12H的形式出现,< code>Duration类直接解析它:

    String durationStringFromDb = "PT12H";
    Duration dur = Duration.parse(durationStringFromDb);
    System.out.println(dur);

输出:

PT12H

Duration以ISO 8601格式打印,其toString方法生成该格式。如果出于某种目的需要将持续时间设置为秒:

    System.out.println(dur.getSeconds());

43200

编辑:或者反过来,如果你从某个地方得到了秒数:

        int numberOfSeconds = 172800;
        Duration dur = Duration.ofSeconds(numberOfSeconds);
        System.out.println(dur);

PT48H

  • 持续时间类的文档
  • Java 8时间API:如何将格式为“mm:ss”的字符串解析为持续时间
  • 解析Kotlin中的持续时间字符串
  • 如何在java中格式化持续时间?(例如格式H:MM:SS)
  • 在Java 8/jsr310中格式化持续时间
  • 维基百科上的ISO 8601
 类似资料:
  • PHP是否有任何内置函数可以接受布尔值并返回其整数等效值?0代表FALSE,1代表TRUE?当然,您可以轻松创建一个函数来做到这一点,我只是询问PHP内部是否有内置函数。我已经尝试了并将其转换为但它们不起作用,它们在TRUE和FALSE两种情况下都返回0。 编辑:问题是它不是真正的布尔值,而是一个字符串“false”、“true”,php没有检测到传递布尔值的jquery帖子。问题解决了,谢谢!

  • 将值转换为安全整数。 使用 Math.max() 和 Math.min() 来找到最接近的安全值。 使用 Math.round() 转换为一个整数。 const toSafeInteger = num => Math.round(Math.max(Math.min(num, Number.MAX_SAFE_INTEGER), Number.MIN_SAFE_INTEGER)); toSafe

  • 问题内容: 我需要使用反射获取字段的值。碰巧我并不总是确定该字段的数据类型是什么。为此,为了避免某些代码重复,我创建了以下方法: 并使用如下方法: 要么 问题是我似乎无法转换为: 有没有更好的方法来实现这一目标? 我正在使用Java 1.6。 问题答案: 不,即使可以从转换为,也无法转换为。对于已知为数字的 单个 值,并且想要获得长整型值,可以使用: 对于数组,这将比较棘手…

  • 问题内容: 我有Hibernate方法,它返回给我一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法? 问题答案: 您将致电(或仅致电),如果您丢失了信息,它甚至会引发异常。返回一个int,但是自动装箱可以解决

  • 如何将字符串值转换为整数,并将转换后的值乘以整数,这样我就可以得到300.00的结果。见下面的例子- 如果我像这样编码,那么我就会出错-

  • 问题内容: 我试图在我的数字列中附加一些alphabt来获取记录。但即时通讯收到错误,我尝试了强制转换和转换功能。 例如 这里StandardCost是一个数字字段,但是当我获取记录时遇到错误,请看看。 问题答案: 我认为应该 或者