【问题标题】:How to get weeks difference between two dates [duplicate]如何获得两个日期之间的周差[重复]
【发布时间】:2015-09-25 12:02:22
【问题描述】:

我是java新手。我有两个日期,例如 Fri Sep 25 00:00:00 IST 20152015 年 10 月 23 日星期五 00:00:00 IST 。我正在尝试获得周差,因此输出将是:-

Sep 25-Oct 1 2015, Oct 2-8 2015, Oct 9-15 2015, Oct 16-21 2015, Oct 22-23 2015

请帮帮我!我不想使用 joda 时间

【问题讨论】:

    标签: java datetime


    【解决方案1】:

    根据http://www.leveluplunch.com/java/examples/number-of-weeks-between-two-dates/ 在 Java 8 中:

    public void weeks_between_two_dates_in_java_with_java8 () {
    
        LocalDate startDate = LocalDate.of(2005, Month.JANUARY, 1);
        LocalDate endDate = LocalDate.of(2006, Month.JANUARY, 1);
    
        long weeksInYear = ChronoUnit.WEEKS.between(startDate, endDate);
    
        assertEquals(52, weeksInYear);
    }
    

    Java 8 有相当不错的日期和时间 API,如您所见 http://www.joda.org/joda-time/

    Joda-Time 是 Java 的事实上的标准日期和时间库。从 Java SE 8 开始,要求用户迁移到 java.time (JSR-310)。

    【讨论】:

    • @d_k 谢谢。我们可以有这种格式吗? 2015年9月25日-10月1日、2015年10月2-8日、2015年10月9-15日、2015年10月16-21日、2015年10月22-23日
    • 如果这是输出数据 - 是的,但您必须将结果重新格式化为您想要的格式
    【解决方案2】:

    在这个thread 中,您可以看到如何获取日期差异。

    所以根据我告诉你的主题,你可以通过这种方式改变周数:

    long diff = d2.getTime() - d1.getTime();
    int weeks = diff / (7 * 24 * 60 * 60 * 1000 );
    

    这对应于每 24 小时每 60 分钟每 60 秒每 1000 毫秒 7 天。

    【讨论】:

    • 它可以做得更优雅。这个解决方案的可读性不是很好。
    • @d__k 我不认为这个解决方案不那么优雅。它不依赖于任何 Java 版本,也不依赖于库。它简单明了,可以很好地封装,因此可以优雅地使用。
    • 谢谢。我们可以有这种格式吗? 2015年9月25日-10月1日、2015年10月2-8日、2015年10月9-15日、2015年10月16-21日、2015年10月22-23日
    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多