我试图在Swift中找到一种强大的方法来获得当前年份的结束,并尝试了这个:
let yearComponent = Calendar.current.dateComponents([.year], from: Date.now)
return Calendar.current.nextDate(
after: Date.now,
matching: yearComponent,
matchingPolicy: .nextTime,
repeatedTimePolicy: .last,
direction: .forward
)
字符串
令我惊讶的是,它总是返回nil
。我想知道为什么。虽然,根据所需的精度,可能有更简单的解决方案,但我感兴趣的是为什么这个解决方案不起作用,以及是否有更好的/可行的解决方案返回当前年份的最后一个可能时刻。
1条答案
按热度按时间6tdlim6h1#
我们不知道这个nextDate方法的确切实现是什么(除非它的代码在某处可用),但理论上在www.example.com之后有无限数量的日期Date.now,所以我猜它可能会以这样的方式实现,它总是增加给定的组件至少一次(并开始搜索从第一个可能的日期后,这一增加),只有在此之后,它检查是否找到适当的日期,这就是为什么它没有找到任何日期在您的情况下。
无论如何,你可以像下面的代码一样做一些事情来获取今年的最后一秒,所以也许这就足够满足你的需求了:
字符串
我不知道你到底想达到什么目的,但是“最后可能的时刻”很难定义,因为理论上它可以有无限的精确度,所以你可能应该使用上面例子中的nextYearStart,并与其他日期进行比较。