TemporalAdjusters Java 中的类提供了调整器,这是修改时间对象的关键工具。示例包括将日期设置为“该月的第二个星期六”或“Next Tuesday” 的调整器,或者将日期设置为该月的最后一天的调整器。
TemporalAdjuster 有两种用途。第一种是直接调用接口上的方法。第二种是使用 Temporal.with(TemporalAdjuster):
以下两种使用 TemporalAdjuster 的方法是等效的,但建议使用第二种方法,因为它更干净且可读
temporal = thisAdjuster.adjustInto(temporal); temporal = temporal.with(thisAdjuster);
方法
方法 | 说明 |
---|---|
dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) | 该方法用于返回月份调整器中的day-of-week,它返回与序数day-of-week同一月份内的新日期对象。 |
firstDayOfMonth() | 此方法用于返回“每月第一天”调整器,该调整器返回设置为当月第一天的新日期。 |
firstDayOfNextMonth() | 此方法用于返回“下个月的第一天”调整器,该调整器返回设置为下个月的第一天的新日期。 |
firstDayOfNextYear() | 该方法用于返回“明年的第一天”调整器,它返回设置为明年的第一天的新日期。 |
firstDayOfYear() | 此方法用于返回“一年的第一天”调整器,该调整器返回设置为当前年份的第一天的新日期。 |
firstInMonth(DayOfWeek dayOfWeek) | 此方法用于返回月份调整器中的第一个,它返回同月中第一个匹配的新日期day-of-week。 |
lastDayOfMonth() | 此方法用于返回“每月最后一天”调整器,该调整器返回设置为当月最后一天的新日期。 |
lastDayOfYear() | 此方法用于返回“一年的最后一天”调整器,该调整器返回设置为当前一年的最后一天的新日期。 |
lastInMonth(DayOfWeek dayOfWeek) | 此方法用于返回月份调整器中的最后一个,该调整器返回与最后一个匹配的 day-of-week 同月的新日期。 |
next(DayOfWeek dayOfWeek) | 此方法用于返回下一个day-of-week调整器,该调整器将日期调整为调整日期后第一次出现指定的day-of-week。 |
nextOrSame(DayOfWeek dayOfWeek) | 此方法用于返回 next-or-same day-of-week 调整器,该调整器将日期调整为调整日期后第一次出现指定的 day-of-week,除非它已经在当天,在这种情况下返回相同的对象。 |
ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster) | 此方法用于获取包装日期调整器的TemporalAdjuster。 |
previous(DayOfWeek dayOfWeek) | 此方法用于返回之前的 day-of-week 调整器,该调整器将日期调整为被调整日期之前第一次出现指定的 day-of-week。 |
previousOrSame(DayOfWeek dayOfWeek) | 此方法用于返回 previous-or-same day-of-week 调整器,该调整器将日期调整为调整日期之前指定的 day-of-week 的第一次出现,除非它已经在当天,在这种情况下,将返回相同的对象。 |
Java
// Implementation of TemporalAdjuster Class Output will
// be different at the time of execution for different
// days. All the dates in the output will be with respect
// to the current date of executing the program
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class TemporalAdjusterExample {
public static void main(String args[])
{
TemporalAdjusterExample gfg
= new TemporalAdjusterExample();
gfg.testAdjusters();
}
public void testAdjusters()
{
// to get the current date
LocalDate date1 = LocalDate.now();
System.out.println("Today's date is: " + date1);
// to get the next monday
LocalDate nextTuesday = date1.with(
TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println("Next Monday is on : "
+ nextTuesday);
// to get the second saturday of next month
LocalDate firstInYear = LocalDate.of(
date1.getYear(), date1.getMonth(), 1);
LocalDate secondSaturday
= firstInYear
.with(TemporalAdjusters.nextOrSame(
DayOfWeek.SATURDAY))
.with(TemporalAdjusters.next(
DayOfWeek.SATURDAY));
// print date of second Saturday of next month
System.out.println("Second saturday is on : "
+ secondSaturday);
}
}
输出:
Today's date is: 2021-02-24 Next Monday is on : 2021-03-01 Second saturday is on : 2021-02-13
相关用法
- Java java.time.temporal.TemporalQueries用法及代码示例
- Java java.time.temporal.WeekFields用法及代码示例
- Java java.time.temporal.ValueRange用法及代码示例
- Java java.time.Clock.equals()用法及代码示例
- Java java.time.Clock.fixed()用法及代码示例
- Java java.time.Clock.getZone()用法及代码示例
- Java java.time.Clock.hashCode()用法及代码示例
- Java java.time.Clock.instant()用法及代码示例
- Java java.time.Clock.millis()用法及代码示例
- Java java.time.Clock.offset()用法及代码示例
- Java java.time.Clock.system()用法及代码示例
- Java java.time.Clock.systemDefaultZone()用法及代码示例
- Java java.time.Clock.systemUTC()用法及代码示例
- Java java.time.Clock.tick()用法及代码示例
- Java java.time.Clock.tickMinutes()用法及代码示例
- Java java.time.Clock.tickSeconds()用法及代码示例
- Java java.time.Clock.withZone()用法及代码示例
- Java java.time.Duration.abs()用法及代码示例
- Java java.time.Duration.addTo()用法及代码示例
- Java java.time.Duration.between()用法及代码示例
- Java java.time.Duration.compareTo()用法及代码示例
- Java java.time.Duration.dividedBy()用法及代码示例
- Java java.time.Duration.equals()用法及代码示例
- Java java.time.Duration.from()用法及代码示例
- Java java.time.Duration.get()用法及代码示例
注:本文由纯净天空筛选整理自surbhityagi15大神的英文原创作品 java.time.temporal.TemporalAdjusters Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。