我正在寻找使用JodaTime每月创建固定日期的任何方式。我有一个JSpinner来设置整数值,我想获取此值并创建日期。例如:JSpinner的有15个,我想创建之日起2016-09-15,2016-10-15,2016-11-15。
如何使用JodaTime做到这一点?
该乔达时间项目现在处于维护模式,与球队的java.time类建议迁移。该java.time框架是建立在Java 8和更高版本。
大部分的java.time功能后移植到Java 6和7 ThreeTen,反向移植,并进一步用于安卓在ThreeTenABP(见如何使用......)。
java.time.LocalDate该LocalDate级表示没有时间一天和不同时区的日期,唯一的价值。
您可以指定年,月和日。
LocalDate ld = LocalDate.of( 2016 , 1 , 15 );
Run Code Online (Sandbox Code Playgroud)
您可以切换月份。java.time类使用Immutable Objects模式,因此将根据原始值生成一个新的新鲜对象。
LocalDate september = ld.withMonth( 9 ); // 1-12 for January-December.
Run Code Online (Sandbox Code Playgroud)
您可以添加/减去月份。
LocalDate nextMonth = ld.plusMonths( 1 );
LocalDate priorMonth = ld.minusMonths( 1 );
Run Code Online (Sandbox Code Playgroud)
您可以选择任何LocalDate并将日期调整为15日。
LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );
LocalDate fifteenthThisMonth = today.withDayOfMonth( 15 );
Run Code Online (Sandbox Code Playgroud)
DateTimeException如果该月的某天的数字无效,则该陷阱被抛出,例如2月31日。
顺便说一句,您可能会发现YearMonth或MonthDay类很方便,Month枚举也很方便。
如果您必须使用Joda-Time,它提供的LocalDate类与十分相似java.time.LocalDate。
LocalDate ld = new LocalDate( 2016 , 1 , 7 );
LocalDate fifteenthSameMonth = ld.withDayOfMonth( 15 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3085 次 |
| 最近记录: |