将字符串日期格式化为 DiffForHuman 样式

Formatting String Date to DiffForHuman Style

我正在尝试以“5 小时”、“50 分钟”等格式获取日期。我正在从 api 获取数据,格式为:2015-12-16 19:28:16

我成功接收到变量中的值:

let date = post["created_at"].string!

print(date) // 2015-12-16 19:28:16

此时,我在 Github 上找到了一个名为 SwiftDate 的图书馆。在文档的最后,它解释了一些与我想要实现的非常相似的东西,所以我尝试了:

let londonRegion = Region(calType: CalendarType.Gregorian, tzType: TimeZoneNames.Europe.London)

let postDate = date.toDate(DateFormat.ISO8601)!.inRegion(londonRegion)
let dateString = postDate.toRelativeString(nil, abbreviated: false, maxUnits:2)

print(dateString)

let dateString... 行,我收到一个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

但它不允许我输入 '!'任何地方。


此外,如果我 print(londonRegion),我会收到:

Region(calendar: <_NSCopyOnWriteCalendarWrapper: 0x7ff09b414ed0>, locale: <__NSCFLocale: 0x7ff09b101b90>)

我做错了什么?实现我想要实现的目标的正确方法是什么?或者有其他方法可以实现吗?

我已经使用这个块解决了我的问题..

let dateString = "2015-1-17 13:58:16"
let inputFormatter = NSDateFormatter()
inputFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss"
let date = inputFormatter.dateFromString(dateString)!

let outputformatter = NSDateComponentsFormatter()
outputformatter.allowedUnits = [.Day, .Hour, .Minute, .Second]
outputformatter.unitsStyle = .Abbreviated

var timeOffset = outputformatter.stringFromDate(date, toDate: NSDate())!

let first = timeOffset.componentsSeparatedByString(" ").first!