代码之家  ›  专栏  ›  技术社区  ›  Nuñito Calzada

Java Date将分钟和秒设置为0

  •  -2
  • Nuñito Calzada  · 技术社区  · 6 年前

    我想将日期的分秒设置为0, 但我发现这些方法已经被弃用了

    Date yesterday = Date.from(Instant.now().minus(24, ChronoUnit.HOURS));
    
        yesterday.setMinutes(0);
                    yesterday.setSeconds(0);
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Anonymous    6 年前

    TL;博士

        ZonedDateTime yesterday = ZonedDateTime.now(ZoneId.of("Europe/Madrid"))
                .minusDays(1)
                .truncatedTo(ChronoUnit.HOURS);
        System.out.println("Yesterday with minutes and seconds set to 0: " + yesterday);
    

    刚才跑步给了我很大的帮助

    昨天,分和秒设置为0:2019-03-17T23:00+01:00[欧洲/马德里]

    定义昨天

    如果你打算在昨天的同一时间,那并不总是24小时前。由于夏季时间(DST)和其他异常,一天可能是例如23、23、5或25小时。

    JAVA时间

    这个 ZonedDateTime java类。现代Java日期和时间API time考虑了时区中的时间异常。所以当你减去一天,你得到的确实是昨天的同一时间,如果这个时间真的存在的话。

    .truncatedTo(ChronoUnit.HOURS) 将有关时区中的分钟、秒和秒分数设置为0。

    你想用 Date 类,但在Java8中不应该这样做。它设计拙劣,而且早已过时。我发现了java。和时间一起工作真是太好了。

    如果你需要一个老式的约会

    你可能需要一个 日期 对于您现在无法更改或负担不起更改的遗留API。在这种情况下,仅在最后一刻转换:

        Instant yesterdayInstant = yesterday.toInstant();
        Date yesterdayDate = Date.from(yesterdayInstant);
        System.out.println("As old-fashoined Date: " + yesterdayDate);
    

    在我的时区(欧洲/哥本哈根,目前与欧洲/马德里一致)我得到了

    旧日期:2019年3月17日星期日23:00:00 CET

    链接

    Oracle Tutorial: Date Time 解释如何使用java。时间