测试已测试 | ✓ |
语语言 | Obj-CObjective C |
许可证 | MIT |
发布最新发布 | 2017年6月 |
由 Sebastian Ludwig 维护。
在单个格式化器中使用 "今天 2 小时前" 和 "昨天下午 4 点"
LDOConditionalDateFormatter *formatter = [LDOConditionalDateFormatter new];
[formatter addFormat:@"just now" forTimeInterval:-10];
[formatter addFormat:@"R" forTimeInterval:-3600];
[formatter addFormat:@"{HH:mm}" for:LDOTimeUnitToday];
[formatter addFormat:@"I" for:LDOTimeUnitYesterday];
[formatter addFormat:@"R" forLast:7 unit:LDOTimeUnitDays];
formatter.defaultFormat = @"{yMd}";
[formatter stringForTimeIntervalFromDate:secondsAgo toReferenceDate:now];
// = just now
[formatter stringForTimeIntervalFromDate:minutesAgo toReferenceDate:now];
// = 42 minutes ago
[formatter stringForTimeIntervalFromDate:earlierToday toReferenceDate:now];
// = 13:37
[formatter stringForTimeIntervalFromDate:yesterday toReferenceDate:now];
// = yesterday
[formatter stringForTimeIntervalFromDate:threeDaysAgo toReferenceDate:now];
// = 3 days ago
[formatter stringForTimeIntervalFromDate:longAgo toReferenceDate:now];
// = 2/11/2015
或
LDOConditionalDateFormatter *formatter = [LDOConditionalDateFormatter new];
[formatter addFormat:@"I R" for:LDOTimeUnitToday];
[formatter addFormat:@"I at {h}" for:LDOTimeUnitYesterday];
[formatter stringForTimeIntervalFromDate:twoHoursAgo toReferenceDate:now];
// = today 2 hours ago
[formatter stringForTimeIntervalFromDate:yesterdayAt4pm toReferenceDate:now];
// = yesterday at 4 PM
LDOConditionalDateFormatter 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "LDOConditionalDateFormatter"
(NSString *)stringForTimeIntervalFromDate:(NSDate *)date toReferenceDate:(NSDate *)referenceDate
格式化给定日期。对于相对的和习惯用法格式,使用给定日期和参考日期之间的时间差。
(NSString *)stringForTimeIntervalFromDate:(NSDate *)date
也格式化给定日期。使用当前日期作为参考日期。
(NSString *)stringForTimeInterval:(NSTimeInterval)seconds
将给定的时间间隔解释为从现在起的偏移量。计算出的日期被格式化。使用当前日期作为参考日期。
I
用于习惯用法表达如 "昨天" 或 "下个月"R
用于相对表达如 "2周前" 或 "1天后"RRRR
重复 7 个 R
以指定可显时间单位数。 RR
产生例如 "2天13小时前" 的表达式~R
预先在任意的 R
格式前加上 ~
以添加一个近似限定符,例如 "大约4小时前",如果时间差不完全精确的话{HH:mm}
用于常规日期格式。您可以使用在 [NSDateFormatter -setDateFormat:]
中设置的任何内容。与 I
和 R
不同,这些模式需要用花括号括起来。{hm}
用于日期格式化模板。只有占位符(没有冒号、空格等)的日期格式化模式将被用作模板。模板将使用 [NSDateFormatter +dateFormatFromTemplate:options:locale:]
转换为日期格式,并考虑设置的区域设置。可以使用四种风格之一添加格式。
addFormat:(NSString *)format forTimeInterval:(NSTimeInterval)timeInterval
在指定的日期和参考日期之间存在差异时,添加要使用的格式。
addFormat:(NSString *)format for:(LDOTimeUnit)unit
添加用于特定时间单位的格式。时间单位需要是相对的时间单位,例如 LDOTimeUnitToday
、LDOTimeUnitSameWeek
或 LDOTimeNextYear
。请查看头文件以获取完整的列表。
addFormat:(NSString *)format forLast:(NSUInteger)count unit:(LDOTimeUnit)unit
添加过去相对时间跨度的格式。时间单位应为 LDOTimeUnitDays
、LDOTimeUnitWeeks
、LDOTimeUnitMonths
或 LDOTimeUnitYears
。
addFormat:(NSString *)format forNext:(NSUInteger)count unit:(LDOTimeUnit)unit
与3.相同,但针对未来的时间跨度。
格式将按照添加的顺序进行检查。如果两个格式满足日期的条件,日期将以最先添加的格式进行格式化。只应用一个格式。
如果不存在与给定日期条件匹配的格式,将使用默认格式(如果指定)。
此库为许多语言提供本地化。如果您想自定义字符串,只需将其添加到自己的本地化中,它将替代捆绑的翻译。
但这并不意味着本地化已经完美。请查看如何贡献
Pod中包含了一组单元测试,试图证明事情按预期进行。它们也很好说明了使用方法。要运行它们,首先克隆仓库,然后从示例目录中运行pod install
。
基于@mattt在FormatterKit的工作以及所有人的贡献。去看看,可能它更适合您的需求。
问题和pull请求总是受欢迎!本地化可能需要改进最多。因此,请检查、纠正并提供翻译。以下密钥大多数语言都缺少
twine用于在单个strings.txt文件中管理所有翻译。如果您想自己重新生成.strings
文件,请从Assets
文件夹中运行以下命令:twine generate-all-string-files strings.txt ./ --format apple --file-name LDOConditionalDateFormatter.strings --create-folders --developer-language en --include-untranslated
Sebastian Ludwig,[email protected]
LDOConditionalDateFormatter可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。