Ego*_*kov 2 date nsdatecomponents swift
Swift 中有没有方便的方法来表示,例如,15 个月大于 1 年,1 周小于 10 天?我觉得DateComponents最能代表我的需求,所以我需要这样的东西:
DateComponents(year: 1) > DateComponents(month: 15) // => false
DateComponents(day: 10) > DateComponents(weekOfMonth: 1) // => true
Run Code Online (Sandbox Code Playgroud)
但据我了解,目前在 swift DateComponents 中是不具有可比性的(二元运算符“>”不能应用于两个“DateComponents”操作数)。
所以也许任何人都可以帮助我找到纯粹的快速解决方案,或者使用一些库?先感谢您!
您可以从中创建日期DateComponents并进行比较。您可以使DateComponents符合Comparable:
extension DateComponents: Comparable {\n public static func < (lhs: DateComponents, rhs: DateComponents) -> Bool {\n let now = Date()\n let calendar = Calendar.current\n return calendar.date(byAdding: lhs, to: now)! < calendar.date(byAdding: rhs, to: now)!\n }\n}\n \nRun Code Online (Sandbox Code Playgroud)\n然后你可以进行这些比较:
\nDateComponents(year: 1) > DateComponents(month: 15) // => false\nDateComponents(day: 10) > DateComponents(weekOfMonth: 1) // => true\nRun Code Online (Sandbox Code Playgroud)\n您可能还想做到Equatable:
extension DateComponents: Equatable {\n public static func == (lhs: DateComponents, rhs: DateComponents) -> Bool {\n let now = Date()\n let calendar = Calendar.current\n return calendar.date(byAdding: lhs, to: now)! == calendar.date(byAdding: rhs, to: now)!\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n免责声明:此修订后的答案使用当前日期/时间作为参考,以确保对天和月进行有意义的比较(假设每月的天数可以改变)。像 \xe2\x80\x9care 这样的问题一个月中超过 30 天\xe2\x80\x9d 仅当调用者提供参考日期或者我们使用 \xe2\x80\x9cnow\xe2\x80\x9d (即我上面所做的\xe2\x80\x99)。
\n请注意,通过使用 \xe2\x80\x9cnow\xe2\x80\x9d 作为参考日期,然后像 \xe2\x80\x9c 这样较大的比较,24 小时或 1 天\xe2\x80\x9d 现在将包含夏令时(例如,取决于您的日历是否将\xe2\x80\x9c向前\xe2\x80\x9d、\xe2\x80\x9c向后\xe2\x80\x9d,或者在绝大多数情况下根本不会改变) 。
\n