Kay*_*inc 0 java date java-time
如果我能按照我的要求做,那就完美了!
<<LocalTime is provided as locTime>>
Date flyDate = a.getDate();
Date landingDate = b.getDate();
flyDate.add(locTime);
Run Code Online (Sandbox Code Playgroud)
或者我可以了解什么是最佳实践。
我有一堆 Flight 对象,目前它们每个都有一个 Date 来确定航班的飞行日期/时间,还有一个用于 LocalTime 的持续时间,表示飞行需要多少小时:分钟。
我想检查一个航班在时间方面是否与另一个航班兼容。航班a的着陆时间应该在航班b的飞行时间之前。
谢谢!
小智 6
正如其他人所说,这是一个有问题的问题,因为 LocalTime 和 Date 确实代表了完全不同且几乎不相关的概念。LocalTime 是一天中没有时区的时间,例如 19:45(或晚上 7:45)。日期是时间线上的一个点;如果它恰好与某个时区某个日期的 19:45 重合,则不会在其他时区。
我相信误用(实际上)一个小时的日期的传统方法是将它设置为 1970 年 1 月 1 日在 JVM 的默认时区中的那个时间。这种做法承担了已经提到的所有责任。特别是 JVM 默认时区设置可以随时从程序的另一部分或在同一 JVM 中运行的任何其他程序进行更改。这意味着一个完全不相关的程序可能会突然导致您的 Date 指示与您初始化它的时间不同的时间。
我们无能为力,所以就这样吧
LocalTime time = LocalTime.of(11, 0);
Instant timeOnEpochDayInDefaultTimeZone = LocalDate.EPOCH
.atTime(time)
.atZone(ZoneId.systemDefault())
.toInstant();
Date oldfashionedDateObject = Date.from(timeOnEpochDayInDefaultTimeZone);
System.out.println(oldfashionedDateObject);
Run Code Online (Sandbox Code Playgroud)
最后输出是
UTC 1999 年 5 月 3 日星期二 11:00:00