Java中的时态对象是什么?
我正在探索并介绍Java8Java中的时态对象是什么?,java,java-8,Java,Java 8,我正在探索并介绍Java8TemporalAccessor似乎是专门为日期、时间、偏移量或它们的某种组合等时态对象设计的。什么是时间对象? 一些谷歌给出了它的含义 随时间变化的对象 但无法将其与Java环境联系起来?根据Joda Time&JSR 310,《问题、概念和方法》,临时助理: 定义对时间对象的只读访问, 例如日期、时间、偏移量或某些组合 其中 各国: 字段和单元与抽象Temporal和TemporalAccessor一起工作,以通用方式提供对日期时间类的访问 书上说: API中指定某
TemporalAccessor
似乎是专门为日期、时间、偏移量或它们的某种组合等时态对象设计的。什么是时间对象?
一些谷歌给出了它的含义
随时间变化的对象
但无法将其与Java环境联系起来?根据Joda Time&JSR 310,《问题、概念和方法》,临时助理
:
定义对时间对象的只读访问,
例如日期、时间、偏移量或某些组合
其中
各国:
字段和单元与抽象Temporal
和TemporalAccessor
一起工作,以通用方式提供对日期时间类的访问
书上说:
API中指定某种日期、时间或两者的所有类都是temporalAccessor
LocalDate
、LocalTime
、LocalDateTime
和ZoneDateTime
是TemporalAccessor
的一些示例
接下来是一个示例代码(基于上一本书中的一些示例):
时间对象基本上是具有不同相关值的对象,例如“月的最后一天”或“下周三”“日期对象上下文中的etc。在Java8中,这些函数被建模为调整基准日期时间的函数。这些函数实现了TemporalAdjuster,并在时态上运行。例如,要查找给定日期后一周中某一天的第一个事件,请使用临时调整器.next(DayOfWeek),例如date.with(next(MONDAY)) 虽然不是特定于语言,但这可能有助于您理解这个概念:时间只是指“与时间相关的”。time对象(就像它们的joda time对应对象)是不可变的,所以不要更改。在@Luke Peterson共享的链接中,时间对象是具有版本和连续性的东西。在这里,单个日期对象可以被视为时间对象,因为我们可以有许多相对值。例如,下周一,下个月的第一天等。这些相对值可以是版本,单个日期对象表示连续性。谢谢Paul。在宏观层面上,我可以看到TemporalAccessor作用于通用字段和时间对象的单位。我认为,在这方面我还有更多的需要探索。:)
public static boolean isFriday13(TemporalAccessor ta) {
if (ta.isSupported(DAY_OF_MONTH) && ta.isSupported(DAY_OF_WEEK)) {
int dayOfMonth = ta.get(DAY_OF_MONTH);
int weekDay = ta.get(DAY_OF_WEEK);
DayOfWeek dayOfWeek = DayOfWeek.of(weekDay);
if (dayOfMonth == 13 && dayOfWeek == FRIDAY) {
return true;
}
}
return false;
}
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
TemporalAccessor ta = formatter.parse("02/13/2015");
LocalDate ld = LocalDate.from(ta);
System.out.println(ld);
System.out.println(isFriday13(ld));
}