将字符串日期格式化为 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!
我正在尝试以“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!