Objective-C 中相对日期范围的优雅实现

Elegant implementation of relative date ranges in Objective-C

我想为我的用户显示一个日期范围。我需要一些聪明但独立于本地化的方法来仅显示范围结束的必要部分,如下所示:

2017-jan-1 to 2017-feb-22017-jan-1 to feb-2

2017-jan-1 to 2017-jan-22017-jan-1 to 2

2017-jan-1 to 2018-jan-22017-jan-1 to 2018-jan-2

我可以写几个 if 来检查组件是否相同,但后来我不得不手动编写格式字符串,我不想这样做,因为其他本地化需要其他 month/day 订单。

是否有与 doesRelativeDateFormatting 类似的系统 API 或 CocoaPods 库?你会怎么做?

NSDateFormatter 方法 +dateFormatFromTemplate:options:locale: 解决了您认为您的方法失败的地方。给定一个模板,指定您希望包含的日期部分; Apple 使用的示例是日期名称、日期编号和月份;它 returns 适合语言环境和用户首选项的格式字符串。

HTH