我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子。 我也知道JodaTime库,但我想要一种没有外部库的工作方式。

功能需要抱怨这些限制:

防止日期保存时间错误

输入是两个Date的对象(没有时间,我知道localdatetime,但我需要处理日期实例)

比如这样的东西?

@MadProgrammer不是真的 - 持续时间不是最合适的...

@assylias嗯,这比OP的好

@assylias然后是什么?

@MadProgrammer DAYS.between(localDate1, localDate2)。

如果您想要逻辑日历日,请使用java.time.temporal.ChronoUnit中的DAYS.between()方法:

LocalDate dateBefore;

LocalDate dateAfter;

long daysBetween = DAYS.between(dateBefore, dateAfter);

如果你想要文字24小时日(持续时间),你可以使用Duration类代替:

LocalDate today = LocalDate.now()

LocalDate yesterday = today.minusDays(1);

// Duration oneDay = Duration.between(today, yesterday); // throws an exception

Duration.between(today.atStartOfDay(), yesterday.atStartOfDay()).toDays() // another option

有关更多信息,请参阅此文档(以及其他文档:Oracle的Java 8)。

抛出异常,因为Duration.between方法需要能够支持SECONDS单元的临时对象。相反,尝试Duration.between(today.atTime(0, 0), yesterday.atTime(0, 0)).toDays()。

-1持续时间不适合这样做。

而不是today.atTime(0, 0),你可以做today.atStartOfDay()。

@assylias为什么不呢?

@REACHUS也许-1有点苛刻,因为你提出的代码有效,但持续时间是为了衡量"基于时间的时间量"。有一种内置方法可以测量不需要从日期转换为日期时间的天数。

根据VGR的评论,您可以使用以下内容:

ChronoUnit.DAYS.between(firstDate, secondDate)

您可以使用until():

LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);

LocalDate christmas = LocalDate.of(2014, Month.DECEMBER, 25);

System.out.println("Until christmas:" + independenceDay.until(christmas));

System.out.println("Until christmas (with crono):" + independenceDay.until(christmas, ChronoUnit.DAYS));

我正在寻找第二个System.out.println语句。谢谢!

我刚刚遇到的第一个版本until的问题是它返回一个Period对象。这将在两个日期之间返回多年/月/天,而不是实际天数。并且期间的getDays()仅返回日期部分(不考虑年数或月数),而不是总天数。第二个版本完全符合要求,可以在两个日期之间获得若干天。

对此有完整的替代方案吗?因为它需要Android SDk 26及以上版本

您可以使用java.time.temporal.ChronoUnit中的DAYS.between

例如

import java.time.temporal.ChronoUnit;

public long getDaysCountBetweenDates(LocalDate dateBefore, LocalDate dateAfter) {

return DAYS.between(dateBefore, dateAfter);

}

If starDate and endDate are instance of java.util.Date, besides to

@mohamed answer

Integer noOfDays = ChronoUnit.DAYS.between(startDate.toInstant(), endDate.toInstant());

但ChronoUnit.DAYS计算完成24小时的天数。

每个人都说使用ChronoUnit.DAYS.between,但只是委托给你自己称之为另一种方法。所以你也可以做firstDate.until(secondDate, ChronoUnit.DAYS)。

两者的文档实际上都提到了这两种方法,并说使用哪一种更具可读性。

FWIW ......我不确定为什么两者都存在。是否有时候一个更可读,另一个是另一个?当/为什么?

在枚举java.time.temporal.ChronoUnit中使用DAYS。以下是示例代码:

输出:

*开始日期:2015-03-01和结束日期之间的天数:2016-03-03是==> 368。

**开始日期:2016-03-03和结束日期之间的天数:2015-03-01是==> -368 *

package com.bitiknow.date;

import java.time.LocalDate;

import java.time.temporal.ChronoUnit;

/**

*

* @author pradeep

*

*/

public class LocalDateTimeTry {

public static void main(String[] args) {

// Date in String format.

String dateString ="2015-03-01";

// Converting date to Java8 Local date

LocalDate startDate = LocalDate.parse(dateString);

LocalDate endtDate = LocalDate.now();

// Range = End date - Start date

Long range = ChronoUnit.DAYS.between(startDate, endtDate);

System.out.println("Number of days between the start date :" + dateString +" and end date :" + endtDate

+" is  ==>" + range);

range = ChronoUnit.DAYS.between(endtDate, startDate);

System.out.println("Number of days between the start date :" + endtDate +" and end date :" + dateString

+" is  ==>" + range);

}

}

干得好:

public class DemoDate {

public static void main(String[] args) {

LocalDate today = LocalDate.now();

System.out.println("Current date:" + today);

//add 1 month to the current date

LocalDate date2 = today.plus(1, ChronoUnit.MONTHS);

System.out.println("Next month:" + date2);

// Put latest date 1st and old date 2nd in 'between' method to get -ve date difference

long daysNegative = ChronoUnit.DAYS.between(date2, today);

System.out.println("Days :"+daysNegative);

// Put old date 1st and new date 2nd in 'between' method to get +ve date difference

long datePositive = ChronoUnit.DAYS.between(today, date2);

System.out.println("Days :"+datePositive);

}

}

获取当天圣诞节前的天数,试试这个

System.out.println(ChronoUnit.DAYS.between(LocalDate.now(),LocalDate.of(Year.now().getValue(), Month.DECEMBER, 25)));

如果目标只是为了获得天数的差异,并且由于上述答案提到了委托方法,我想指出一次也可以简单地使用 -

public long daysInBetween(java.time.LocalDate startDate, java.time.LocalDate endDate) {

// Check for null values here

return endDate.toEpochDay() - startDate.toEpochDay();

}

在陷阱中使用'Period.between(date1,date2).getDays()'而没有意识到你松散了差异的月份和年份。

get days between two dates date is instance of java.util.Date

public static long daysBetweenTwoDates(Date dateFrom, Date dateTo) {

return DAYS.between(Instant.ofEpochMilli(dateFrom.getTime()), Instant.ofEpochMilli(dateTo.getTime()));

}

我知道这个问题适用于Java 8,但使用Java 9可以使用:

public static List getDatesBetween(LocalDate startDate, LocalDate endDate) {

return startDate.datesUntil(endDate)

.collect(Collectors.toList());

}

java 两个日期的天数_计算Java 8中两个日期之间的天数相关推荐

  1. wps表格日期计算天数_如何计算Google表格中两个日期之间的天数

    wps表格日期计算天数 If you want to count the number of days between two dates, you can use the DAYS, DATEDIF ...

  2. mysql 指定日期条件求和_如何在mysql中按每个日期对字段进行求和-问答-阿里云开发者社区-阿里云...

    我正在尝试根据案件的日期查询QUERY总计字段罚款,何时但不成功,有解决方案吗? 我的桌子 NIP NAMA TANGGAL JENIS_KEHADIRAN DENDA 10016 Novi Iraw ...

  3. R语言epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、标准化系数、每当剔除某一条目后系数的变化、设置reverse参数不对任何数据对象进行反序

    R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化

  4. R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、使用alpha函数和基于业务筛选的数据列的列表计算Cronbach‘s α

    R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.使用alpha函数和基于业务筛选的数据列的列表计算Cronbach's α 目录

  5. R语言epiDisplay包alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、标准化系数、每剔除某一条目后系数的变化、var.labels.trunc参数指定字符串长度

    R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化系数.每当剔除某一条目后系数的变化.使用var.l ...

  6. R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、、每剔除某一条目后系数的变化、alphaBest函数获取最高alpha值对应的项目集

    R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化系数.每当剔除某一条目后系数的变化.使用alpha ...

  7. java日期相差周_利用Java中Calendar计算两个日期之间的天数和周数

    前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每 ...

  8. java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数

    我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...

  9. java 时间间隔 工作日_计算Java中两个日期之间的工作日数

    5行代码无循环的解决方案 定义之间的天数的方式与ChronoUnit.DAYS.between(start, end)表示4星期一至星期五之间存在天数的方式相同.由于我们只对工作日感兴趣,因此我们必须 ...

最新文章

  1. ICDM 2019最佳论文:从图片、文本到网络结构数据翻译,一种新型的多属性图翻译模型
  2. ABAP知识:LIKE LINE OF 和LIKE TABLE OF
  3. java swing 传值_java swing 窗体之间怎么传值?
  4. mysql 8添加账号赋予权限
  5. linux网络编程之SCTP套接字常用接口
  6. 理解云原生--开发模型、架构原则、主要技术
  7. 内核网络设备的注册与初始化
  8. 分析单点登录(流程图与数据安全)
  9. [转载]在iTOP-4412开发板上调试helloworld应用
  10. win10键盘失灵一键修复方法
  11. C# 获取打印机状态
  12. 微信测试公众号推送信息给女朋友(node版本)
  13. 【重温C/C++】explicit+||template||virtual虚函数||重载和重写
  14. mysql url查找_Superl-url:一款开源、强大的关键词URL采集工具
  15. 电影院同场不同价 你愿意为“黄金座位”买单吗
  16. uniapp--动态背景特效1
  17. 签名设计一笔教写过程
  18. YOLOv5 安全帽识别:如何使用 YOLOv5 进行实时安全帽检测
  19. 总结近年来我国主、被动遥感卫星发射的情况
  20. 我的2021年度书单(主要教你面试怎么装B)

热门文章

  1. 腾讯极客挑战赛第一期:解开一道即将尘封十几年的封印 writeup
  2. 温度模块DS18B20
  3. 详细总结【贪心】算法解题技巧和规律
  4. 新网互联面板介绍,域名管理
  5. 求大神帮忙看一下sql
  6. Python中用PIL/Pillow裁剪图片
  7. swiper一个页面多个轮播
  8. 一天一点raknet_Editing 教程/WebSocket
  9. 《JAVA300集》多线程_并发基础案例-day21
  10. 组合逻辑控制器时序系统