java中日期怎么比较_如何比较Java中的日期?
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中的日期?相关推荐
- .Net 6.0中的新增特性_.Net 6.0中的新增功能
.Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...
- css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格
html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...
- amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】
HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...
- java 判断日期是同一天_如何检查Java中的两个日期是否在同一天
虽然根据java.util.Date的日期组件部分给出的答案在很多部分都是足够的,但我要强调的是,java.util.Date不是日期,而是一种以毫秒为单位测量的UNIX时间戳.那是什么后果? 日期时 ...
- java里utils写什么_工具篇-Java中一些utils
下边是整理的一些Java开发的utils,顺便吐槽下新浪博客的编辑器排版跟我写的博客一样 烂,所以采用的博客园 字符串 1.Java中String与其他类型之间的转换 String与日期对象 1 pu ...
- java中的最终变量_在lambda表达式中使用的变量应该是最终变量或有效的最终变量。...
A final变量意味着它只能被实例化一次.在Java中,您不能在lambda和匿名内部类中使用非最终变量. 您可以使用旧的for-each循环重构代码:private TimeZone extrac ...
- java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?
Oracle数据库索引和SQLServer的阐述 Oracle常见表结构 oracle数据库约束条件删除.取消.启用 在很多情况下,我们使用Hibernate在已经建立好数据库的基础上.在oracle ...
- java 删除压缩zip文件_从ZIP存档中删除文件,而无需在Java或Python中解压缩 - java...
从ZIP存档中删除文件,而无需使用Java(首选)或Python解压缩 你好 我使用包含数百个高度压缩的文本文件的大型ZIP文件.解压缩ZIP文件时,可能要花一些时间,并且很容易消耗多达20 GB的磁 ...
- java中注解的解析_全面解析Java中的注解与注释
注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...
- java中对象的生存期_深入理解Java虚拟机-判断对象是否存活算法与对象引用
我们知道Java中的对象一般存放在堆中,但是总不能让这些对象一直占着内存空间,这些对象最终都会被回收并释放内存,那么我们如何判断对象已经成为垃圾呢?这篇文章会提出两种算法解决这个问题.另外,本文还要谈 ...
最新文章
- 我艹,MySQL数据量大时,delete操作无法命中索引。
- 美军重视扩展现实技术的研究和应用
- navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表
- android手势监听功能吗,Android手势监听 OnGestureListener (短按,长按,慢滑动,快滑动)...
- 为何@Autowired注解无法实现第三方类的注入?
- js+css淡入效果
- oracle11g教程视频教程,最新oracle11g DBA 开发和应用数据库视频教程_IT教程网
- erp框架 saas_给大家分享三款生产管理ERP软件
- 【免费-LOGO制作】——U钙网
- VS2008 开发 Sharepoint Workflow 遇到的一些细节
- 【NOIP2011提高组】观光公交
- python 求平面两点距离_Python求平面内点到直线距离的实现
- Android 文字测量
- 查看索引是否命中oracle,Oracle索引命中与扫描规律总结
- Asp.Net MVC4的学习概况
- 中国第三代半导体名单!
- This was likely an oversight when migrating to django.urls.path().
- angular 使用ng-zorro添加iconfont图标
- There are test failures.
- 计算机网络的互联形式有哪些,计算机网络互连