LocalDate.now( ZoneId.systemDefault() )
.isBefore( LocalDate.of( 2016 , Month.DECEMBER , 25 ) )
Run Code Online (Sandbox Code Playgroud)
使用java.time类进行日期时间处理的现代方法.大部分功能都是后端移植到Android(参见下面的部分).
要确定当前日期,需要时区.对于任何给定的时刻,日期在全球范围内因地区而异.圣诞首先开始在太平洋区域,如Pacific/Auckland,在后来Asia/Kolkata,再后来在Europe/Paris,甚至后来在America/Montreal.这就解释了为什么圣诞老人将他的驯鹿从东方飞到西方.
如果重要,请询问用户预期的时区.否则,请使用JVM的当前默认区域.
ZoneId z = ZoneId.systemDefault() ;
LocalDate today = LocalDate.now( z );
Run Code Online (Sandbox Code Playgroud)
确定圣诞节.
LocalDate xmas = LocalDate.of( 2016 , Month.DECEMBER , 25 ) ;
Run Code Online (Sandbox Code Playgroud)
相比.
if( today.isBefore( xmas ) ) {
… disable button
} else {
… enable button
}
Run Code Online (Sandbox Code Playgroud)
要动态更新按钮以在时钟跳到圣诞节时启用,请运行后台线程.经常检查当前日期并与截止日期进行比较.A ScheduledExecutorService是运行这样的重复后台任务的现代方法.请注意,如果需要,您可以设置初始延迟以使您接近Xmas的开头,以减少多余检查的数量.搜索有关此主题的许多问题和答案的堆栈溢出.提示:确保在执行程序服务中运行的代码的最高级别放置一个try-catch,因为任何未捕获Exception都会导致服务静默停止.
请小心以线程安全的方式从后台线程访问GUI中的按钮.再次,针对此主题搜索Stack Overflow的许多问题和解答.
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |