代码之家  ›  专栏  ›  技术社区  ›  en Peris

从日历到ChronoLocalDateTime

  •  2
  • en Peris  · 技术社区  · 6 年前

    我想知道 LocalDateTime 是在昨天之后,所以我做了比较,但我不知道如何从日历传递到 ChronoLocalDateTime

    final Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1);
    lastClientEvent.getDateReceived().isAfter(cal);
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Youcef LAIDANI    6 年前

    我不知道你说的昨天到底是什么意思,如果你说的是昨天,那么在今天午夜之前的任何一天,你都可以用:

    LocalDateTime yesterday = LocalDateTime.of(
            LocalDate.now(ZoneId.of("Europe/Madrid")),
            LocalTime.MIDNIGHT
    ); 
    => 2018-06-16T00:00
    

    如果你是说昨天的午夜,你可以用 minusDays(1) 以下内容:

    LocalDateTime yesterday = LocalDateTime.of(
            LocalDate.now(ZoneId.of("Europe/Madrid")),
            LocalTime.MIDNIGHT
    ).minusDays(1);
    => 2018-06-15T00:00
    

    然后您可以将您的日期与此进行比较:

    LocalDateTime anyDate = LocalDateTime.of(2018, Month.JUNE, 16, 9, 27, 50);
    if (anyDate.isAfter(yesterday)) { }
    

    另一个解决方案 @Ole V.V. 您可以使用:

    LocalDateTime anyDate = LocalDateTime.of(2018, Month.JUNE, 16, 9, 27, 50);
    LocalDate zoneDate = LocalDate.now(ZoneId.of("Europe/Madrid"));
    if (anyDate.toLocalDate().isAfter(zoneDate)) { }
    
        2
  •  0
  •   NiVeR    6 年前

    您可以这样转换它:

    final Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1);
    Date ts = cal.getTime();
    Instant instant = Instant.ofEpochMilli(ts.getTime());
    LocalDateTime yesterday = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    
    if(lastClientEvent.getDateReceived().isAfter(yesterday){..}