首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有时间组件的Java 8天差

没有时间组件的Java 8天差
EN

Stack Overflow用户
提问于 2018-11-05 17:18:02
回答 1查看 101关注 0票数 0

我的实用工具方法接受Java 7日期(因为这是外部的,所以我无法控制它),但是需要计算日期差异。我正在使用Java 8 ChronoUnit方法来精确地避免闰年、夏令等方面的所有问题。

代码语言:javascript
复制
public static long daysBetweenDatesWithSign(Date d1, Date d2) {
    Instant instant1 = d1.toInstant();
    Instant instant2 = d2.toInstant();
    long diff = ChronoUnit.DAYS.between(instant1, instant2);
    return diff;
}

结果不是我想要的,因为它需要时间考虑。

( [Nov.5,2018 11:00am] , [Mar.5,2019 10:00am] )给出的是-119而不是-120

( [Nov.5,2018 11:00am] , [Mar.5,2019 3:00pm] )给了-120

我需要这两种方法来提供-120,因为我的功能应该是一天/无时间的比较。

但是我不想回到Java 7的Calendar,因为闰年的问题等等。准确地说,我需要新的Java 8方法,但是我能在Java 8中比较天数/无时间吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 18:07:24

首先,该方法为给定日期值返回的值分别是113114,而不是-119-120

假设您想要根据当前(默认)时区的日期差异,可以通过调用Instant (然后调用toLocalDate )将atZone值转换为toLocalDate

代码语言:javascript
复制
public static long daysBetweenDatesWithSign(Date d1, Date d2) {
    return daysBetweenDatesWithSign(d1, d2, ZoneId.systemDefault());
}
public static long daysBetweenDatesWithSign(Date d1, Date d2, ZoneId zone) {
    LocalDate instant1 = d1.toInstant().atZone(zone).toLocalDate();
    LocalDate instant2 = d2.toInstant().atZone(zone).toLocalDate();
    return ChronoUnit.DAYS.between(instant1, instant2);
}

测试

代码语言:javascript
复制
public static void main(String[] args) throws ParseException {
    test("Nov.11,2018 11:00am", "Mar.5,2019 10:00am");
    test("Nov.11,2018 11:00am", "Mar.5,2019 3:00pm");
}
public static void test(String d1, String d2) throws ParseException {
    SimpleDateFormat fmt = new SimpleDateFormat("MMM.d,yyyy hh:mma");
    System.out.println("[" + d1 + "] , [" + d2 + "] = " +
            daysBetweenDatesWithSign(fmt.parse(d1), fmt.parse(d2)));
}

输出

代码语言:javascript
复制
[Nov.11,2018 11:00am] , [Mar.5,2019 10:00am] = 114
[Nov.11,2018 11:00am] , [Mar.5,2019 3:00pm] = 114
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53159149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档