我正在尝试以“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>)
我做错了什么?实现我想要实现的目标是什么?或者还有另一种方法来实现这一目标吗?
答案 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!