TL;DRLocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;Boolean isBetween =

( ! today.isBefore( localDate1 ) )  // “not-before” is short for “is-equal-to or later-than”.

&&

today.isBefore( localDate3 ) ;

或者,更好的是,如果添加LocalDateRange.of(

LocalDate.of( … ) ,

LocalDate.of( … )).contains(

LocalDate.now())

半开放的方法,其中开始是包涵而结尾是排他性.

格式选择不当

顺便说一下,对于日期或日期时间值的文本表示来说,这是格式的错误选择。只要有可能,就坚持标准。ISO 8601格式。ISO 8601格式是明确的,在人类文化中是可以理解的,并且很容易被机器解析。

对于只有日期的值,标准格式是YYYY-MM-DD.注意,这种格式的好处是在按字母顺序排序时是按时间顺序排列的。

LocalDate

这个LocalDate类表示一个日期纯值,没有一天的时间,也没有时区.

时区是确定日期的关键。在任何特定时刻,全球各地的日期因地区而异。例如,午夜过后的几分钟法国巴黎是一个新的一天,而仍然“昨天”在魁北克省.ZoneId z = ZoneId.of( "America/Montreal" );LocalDate today = LocalDate.now( z );

DateTimeFormatter

由于您的输入字符串是非标准格式,我们必须定义一个格式模式来匹配.DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );

使用它解析输入字符串。LocalDate start = LocalDate.parse( "22-02-2010" , f );LocalDate stop = LocalDate.parse( "25-12-2010" , f );

在日期时间工作中,通常最好用半开放的方法来定义一段时间,其中开始是包涵当结局是排他性..所以我们想知道今天是一样的还是晚于开始,也是在停止之前。一个简短的方式说“是相同的或晚于开始”是“不是在开始之前”。Boolean intervalContainsToday = ( ! today.isBefore( start ) ) && today.isBefore( stop ) ;

看见gstackflow的答案显示可以调用的比较方法列表。

关于java.time

若要了解更多信息,请参见Oracle教程..并搜索堆栈溢出的许多例子和解释。规格是JSR 310.

在哪里获得java.time类?内置的。

带有捆绑实现的标准JavaAPI的一部分。

Java 9添加了一些次要的特性和修复。中的大部分java.time功能都被移植到Java 6&7中。这个项目适应

Threeten-Backport(上面提到)专门用于Android。

这个项目使用其他类扩展java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里发现一些有用的类,例如Interval, YearWeek, YearQuarter,和更多.

更新:下面这个“Joda-time”部分完整地保存为历史。这个尤达-时间项目,现在在维护模式,建议迁移到java.time上课。

尤达-时间

对于绑定的java.util.Date和java.util.Calendar类,其他答案是正确的。但这些课程是出了名的麻烦。下面是一些使用尤达-时间2.3图书馆。

如果您确实想要一个没有任何时间部分且没有时区的日期,则使用LocalDate在Joda上课-时间。该类提供了比较方法,包括compareTo(与Java比较器), isBefore, isAfter,和isEqual.

输入…String string1 = "22-02-2010";String string2 = "07-04-2010";String string3 = "25-12-2010";

定义描述输入字符串…的格式化程序DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd-MM-yyyy" );

使用格式化程序将字符串解析为LocalDate对象…LocalDate localDate1 = formatter.parseLocalDate( string1 );LocalDate localDate2 = formatter.parseLocalDate( string2 );LocalDate localDate3

= formatter.parseLocalDate( string3 );boolean is1After2 = localDate1.isAfter( localDate2 );boolean is2Before3 = localDate2.isBefore( localDate3 );

转储到控制台…System.out.println( "Dates: " + localDate1 + " " + localDate2 + " " + localDate3 );System.out.println( "is1After2 " + is1After2 );

System.out.println( "is2Before3 " + is2Before3 );

运行…时Dates: 2010-02-22 2010-04-07 2010-12-25

is1After2 false

is2Before3 true

因此,看看第二个是否位于其他两个端点之间(独占,意思是不等于任何一个端点)…boolean is2Between1And3 = ( ( localDate2.isAfter( localDate1 ) ) && ( localDate2.isBefore( localDate3 ) ) );

在一段时间内工作

如果您使用的是时间跨度,我建议您在Joda-time中探索以下课程:持续时间, 间隔,和期间..方法,例如overlap和contains让比较变得容易。

有关文本表示,请参阅ISO 8601标准的:格式:PnYnMnDTnHnMnS

例子:P3Y6M4DT12H30M5S

(意思是“三年、六个月、四天、十二小时、三十分钟、五秒钟”)

格式:开始/结束

例子:2007-03-01T13:00:00Z/2008-05-11T15:30:00Z

Joda-time使用半开包涵当结局是排他性..对于处理时间跨度而言,这种方法是明智的。搜索StackOverflow以获得更多信息。

java中日期怎么比较_如何比较Java中的日期?相关推荐

  1. .Net 6.0中的新增特性_.Net 6.0中的新增功能

    .Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...

  2. css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格

    html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...

  3. amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】

    HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...

  4. java 判断日期是同一天_如何检查Java中的两个日期是否在同一天

    虽然根据java.util.Date的日期组件部分给出的答案在很多部分都是足够的,但我要强调的是,java.util.Date不是日期,而是一种以毫秒为单位测量的UNIX时间戳.那是什么后果? 日期时 ...

  5. java里utils写什么_工具篇-Java中一些utils

    下边是整理的一些Java开发的utils,顺便吐槽下新浪博客的编辑器排版跟我写的博客一样 烂,所以采用的博客园 字符串 1.Java中String与其他类型之间的转换 String与日期对象 1 pu ...

  6. java中的最终变量_在lambda表达式中使用的变量应该是最终变量或有效的最终变量。...

    A final变量意味着它只能被实例化一次.在Java中,您不能在lambda和匿名内部类中使用非最终变量. 您可以使用旧的for-each循环重构代码:private TimeZone extrac ...

  7. java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?

    Oracle数据库索引和SQLServer的阐述 Oracle常见表结构 oracle数据库约束条件删除.取消.启用 在很多情况下,我们使用Hibernate在已经建立好数据库的基础上.在oracle ...

  8. java 删除压缩zip文件_从ZIP存档中删除文件,而无需在Java或Python中解压缩 - java...

    从ZIP存档中删除文件,而无需使用Java(首选)或Python解压缩 你好 我使用包含数百个高度压缩的文本文件的大型ZIP文件.解压缩ZIP文件时,可能要花一些时间,并且很容易消耗多达20 GB的磁 ...

  9. java中注解的解析_全面解析Java中的注解与注释

    注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...

  10. java中对象的生存期_深入理解Java虚拟机-判断对象是否存活算法与对象引用

    我们知道Java中的对象一般存放在堆中,但是总不能让这些对象一直占着内存空间,这些对象最终都会被回收并释放内存,那么我们如何判断对象已经成为垃圾呢?这篇文章会提出两种算法解决这个问题.另外,本文还要谈 ...

最新文章

  1. 我艹,MySQL数据量大时,delete操作无法命中索引。
  2. 美军重视扩展现实技术的研究和应用
  3. navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表
  4. android手势监听功能吗,Android手势监听 OnGestureListener (短按,长按,慢滑动,快滑动)...
  5. 为何@Autowired注解无法实现第三方类的注入?
  6. js+css淡入效果
  7. oracle11g教程视频教程,最新oracle11g DBA 开发和应用数据库视频教程_IT教程网
  8. erp框架 saas_给大家分享三款生产管理ERP软件
  9. 【免费-LOGO制作】——U钙网
  10. VS2008 开发 Sharepoint Workflow 遇到的一些细节
  11. 【NOIP2011提高组】观光公交
  12. python 求平面两点距离_Python求平面内点到直线距离的实现
  13. Android 文字测量
  14. 查看索引是否命中oracle,Oracle索引命中与扫描规律总结
  15. Asp.Net MVC4的学习概况
  16. 中国第三代半导体名单!
  17. This was likely an oversight when migrating to django.urls.path().
  18. angular 使用ng-zorro添加iconfont图标
  19. There are test failures.
  20. 计算机网络的互联形式有哪些,计算机网络互连

热门文章

  1. linux shell 统计文件数量
  2. linux gcc make cmake 三工具的关系
  3. iconv文件编码判断转换
  4. Windows操作系统产品名与内部版本号的对应(windows版本号)
  5. 取得手机屏幕大小/style的应用技巧
  6. OpenWRT中运行脚本报错
  7. Python学习之字典
  8. 一个Linux下C线程池的实现
  9. juddi MySQL_JUDDI v3部署并连接MySQL数据库
  10. echarts饼图解析html标签,解决echarts中饼图标签重叠的问题