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

时间:2015-12-16 20:23:46

标签: ios swift nsdate nsdateformatter

我正在尝试以“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...行,我收到错误:

  

致命错误:在解包可选值时意外发现nil

但它不会让我把'!'任何地方。

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

  

区域(日历:< _NSCopyOnWriteCalendarWrapper:0x7ff09b414ed0>,区域设置:< __ NSCFLocale:0x7ff09b101b90>)

我做错了什么?实现我想要实现的目标是什么?或者还有另一种方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

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

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!