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

LocalDateTime删除毫秒

朱阳曜
2023-03-14

我在使用Java8的java应用程序中工作。

我已经集成了数据库(多个数据库Oracle,MySQL,Postgres)和其中在DB i字符串创建的日期。

DB中的日期格式为-2015-07-29 16:23:28.143

我从DB获取这个,并在Localdatetime对象中设置

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime());

所以这里的问题是我不想在响应中显示/发送毫秒。我想显示/发送日期,如2015-07-29 16:23:28

我尝试了格式化程序,但失败了,因为它提供了字符串,我不想将LocalDateTime对象更改为字符串,因为这将导致所有Java应用程序中的重大更改。所以我想找到解决办法

有人知道这个问题的解决方案吗?

共有3个答案

武博艺
2023-03-14

Happy Family提供代码和日志,并在Marvin上发表评论,为那些使用STRING的人解答问题,

!!! 我也掉进了同样的陷阱!!!

问题:

withNano(0)truncatedTo(ChronoUnit.SECONDS)也将删除秒数,如果秒数为:00(时钟时,秒针指向12)

进一步扩展Marvin的示例输出

2015-07-30T16:29:11.684
2015-07-30T16:29:11
2015-07-30T16:31 // for actual time 2015-07-30T16:31:00.684
2015-07-30T16:31 // for actual time 2015-07-30T16:31:00.888

上述行为可能导致错误:

当您消除纳秒时,如果秒显示为:00,它们将从打印中跳过

决议:

public class WithNanoTest {
    public static void main(String[] args) throws InterruptedException {
        while (true) {
            Thread.sleep(500);

            DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
            System.out.println("truncate :::: " + LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS).format(dtf));
            System.out.println("withNano :::: " + LocalDateTime.now().withNano(0).format(dtf));
        }
    }
}

日志截图

使用DateFor事的日志

不带DateFormatter的日志(仅使用truncatewith nano(0)

观察这里缺失的秒数!

蔡鸿骞
2023-03-14

只需将它们设置为0

myObj。setCreated(rs.getTimestamp(“created”)。toLocalDateTime()。纳米(0))

样本/证明:

import java.time.LocalDateTime;

public class DateTimeSample {

  public static void main(String[] args) {
    LocalDateTime ldt = LocalDateTime.now();
    System.out.println(ldt);
    System.out.println(ldt.withNano(0));
  }
}

输出:

2015-07-30T16:29:11.684
2015-07-30T16:29:11

作者注:虽然这是公认的答案,但彼得·劳里的答案更可取,因为它使意图更加明确。

傅元章
2023-03-14

你可以在几秒钟内放下任何东西。调用LocalDateTime::truncatedTo

ldt = ldt.truncatedTo(ChronoUnit.SECONDS);
 类似资料:
  • 问题是: 格式如下:2015-10-23T03:34:40 当我试图这样解决问题时: 我在另一个地方遇到问题。Java需要在我的服务calass中将type更改为String类型: 如果我将更改为,则无法使用方法plusDay(1):((( 我也尝试了这样的方法: 格式与字符相同' T' 2018-09-13T05:42:28 这种方式也不适合我: 因为a不能将类型改为字符串 这种方式不起作用,因

  • 有了这种SQL语句,如何从date_created列中删除毫秒?

  • 问题内容: 我想知道如果有一种方法,因为1970年1月1日(时期),以获得当前毫秒使用新的,或Java的8类。 已知的方法如下: 要么 问题答案: 我不能完全确定“当前毫秒”的含义,但我假设这是自“纪元”(即UTC 1970年1月1日午夜)以来的毫秒数。 如果你想找到,因为时代的毫秒数 眼下, 然后用作为nubian菜鸟指出。如果是这样,则没有理由使用任何新的java.time API来执行此操作

  • 我可以使用对expected进行中继,使它们相等,但是,这意味着每次对被测试的转换器类进行比较(isAfter,isBefore,equals),都必须应用中继。 对于JDK 11(或者我可能错过的文档:),是否有适当的方法在到之间进行转换,反之亦然? 更新: 现有的测试似乎验证的是,给定一个长值,我应该得到相同的LocalDateTime等价物,这是通过使用给定的(转换为长值的LocalDate

  • 想在我的网站上创建一个脚本,每隔几毫秒删除剪贴板中的所有内容,以防止截图、复制等。 这是我试过的。不知道为什么它不起作用。请帮忙。