SORelativeDateTransformer 1.1.10

SORelativeDateTransformer 1.1.10

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Bill Garrison维护。



  • billgarrison

SORelativeDateTransformer是一种值转换器,可以生成一个描述给定日期与当前日期之间相对差异的易读短语。

例如,当当前日期时间为2010-12-05 11:30时,则

... 2010-12-05 11:00 转换为 "30分钟前"

... 2010-12-01 11:00 转换为 "5天前"

... 2010-12-25 08:00 转换为 "在2周后"

转换器不提供反向转换;您只能从NSDate转换为NSString。

使用方法

将源文件和本地化字符串包添加到您的项目中。

SORelativeDateTransformer.h
SORelativeDateTransformer.m
SORelativeDataTransformer.bundle

在任何需要生成相对日期短语的地点创建SORelativeDateTransformer实例。

// Display a file's creation date relative to today's date
NSURL *someFilePath = ...;
NSDictionary *attribs = [[NSFileManager defaultManager] attributesOfItemAtPath:someFilePath error:NULL];

NSDate *dateModified = [attribs fileModificationDate];

// fileModificationDate is 2010-10-01 12:00:00TZ; 
// Date now is 2010-10-30 12:00:00TZ

NSString *relativeDate = [[SORelativeDateTransformer registeredTransformer] transformedValue:dateModified];

NSLog (@"This file was modified %@.", relativeDate); // ==> "This file was modified 3 weeks ago."

本地化

附带的包SORelativeDateTransformer.bundle提供了日期组件名称及其复数形式的本地化。

包含的本地化

  • 加泰罗尼亚语
  • 荷兰语
  • 英语
  • 法语
  • 德语
  • 意大利语
  • 日语
  • 挪威语
  • 葡萄牙语
  • 西班牙语
  • 简体中文
  • 繁体中文

本地化还包括描述相对过去和未来日期的短语兼容NSString的格式模板。

  • 对于过去的日期,英语短语的格式模板为"%d %@ ago"。例如,20分钟前
  • 对于未来的日期,格式模板为"in %d %@"。例如,20分钟后

要添加自己的本地化,将SORelativeDateTransformer.bundle目录中的英语本地化复制到一个适当命名的.lproj子目录中,然后编辑该新本地化子目录中的.strings文件。

例如,要添加韩国本地化

# Change working directory to the SORelativeDateTransformer.bundle

cd ${PROJECT_DIR}/SORelativeDateTransformer.bundle

# Copy the English localization subdirectory
# to an appropriately named lproj directory for a Korean localization

cp -R en.lproj ko.lproj

# Edit the .strings file within the Italian lproj directory
# to replace the English localization values with Korean equivalents.
# Use your favorite UTF-16-capable text editor.

mate ko.lproj/SORelativeDateTransformer.strings

测试应用

包括了一个iOS交互测试应用。您可以从日期选择器中选择一个日期,然后查看下面的生成的相对日期字符串。

兼容性

SORelativeDateTransformer兼容iOS 4.3及以后版本,以及Mac OS X 10.4及以后版本。支持在ARC和非ARC项目中使用。

许可证

MIT许可证。使用它,修改它,但请给我一些爱。

致谢

Bill Garrison,对初始实现。 @github@bitbucket

黄庆兰(digdog)对NSDate类贡献了<耶< href="https://github.com/digdog/NSDate-RelativeDate">NSDate-RelativeDate,我基于此开发了这个值转换器。@github.

亚当·厄恩斯特(Adam Ernst),他将代码重组织整理成更简洁的布局,以便更容易地集成到项目中。@github.

马克斯·加瑟(Markus Gasser),他纠正了德语本地化。@github.

马丁·德斯坦格诺尔(Martin Destagnol),他纠正了法语本地化并推动了ARC兼容性。@github.

汉德里克·勃鲁伊恩斯玛(Hendrik Bruinsma),他贡献了荷兰语本地化。@github.

元翊民(Vincent Yuan),他贡献了简化字和繁体字本地化。@github.

布莱恩·吉利克(Brian Gesiak),他贡献了日语本地化。@github.

保罗·安德烈·戈·罗德里格斯(Paulo André G Rodrigues),他贡献了葡萄牙语本地化。@github.

拉格纳·亨利克森(Ragnar Henriksen),他贡献了挪威语本地化。@github.

哈尔特·雅各布森(Hjalti Jakobsson),他贡献了意大利语本地化。@github.

迈克尔·佩特罗夫(Michael Petrov),他在频繁调用中提高了性能。@github.

大卫·科尔特斯(David Cortés)和Lafosca,他们贡献了加泰罗尼亚语本地化。@github