我在使用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应用程序中的重大更改。所以我想找到解决办法
有人知道这个问题的解决方案吗?
向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的日志(仅使用truncate
或with nano(0)
)
观察这里缺失的秒数!
只需将它们设置为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
作者注:虽然这是公认的答案,但彼得·劳里的答案更可取,因为它使意图更加明确。
你可以在几秒钟内放下任何东西。调用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
想在我的网站上创建一个脚本,每隔几毫秒删除剪贴板中的所有内容,以防止截图、复制等。 这是我试过的。不知道为什么它不起作用。请帮忙。