格式化分析
- 今年
- 今天
- 一分钟内
- 刚刚
- 一小时内
- xx 分钟前
- 其他
-xx 小时前
- 一分钟内
- 昨天
- 昨天 08:19
- 其他(前天或者更早)
- 10-10 08:19
- 今天
- 其他(去年或者更早)
- 2014-10-10 08:19
将时间转化抽取成一个分类
时间字符串转成 NSDate
- 只需要在给 create_at 设置值的时候才需要转化-也就需要转化一次
事例代码
extension NSDate{
class func convertCreatedText(timeStr: String) -> String{
//设置格式
CommonDateFormatter.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
CommonDateFormatter.locale = NSLocale(localeIdentifier: "en_US")
//1.转化为 NSDate
let date = CommonDateFormatter.dateFromString(timeStr)!
if isThisYear(date){
//如果是今年
let calendar = NSCalendar.currentCalendar()
if calendar.isDateInToday(date) {
//如果是今天CommonDateFormatter
let interval:Int = abs(Int(date.timeIntervalSinceNow))
if interval < 60{
return "刚刚"
} else if interval < 60 * 60{
return "\(interval/60)分钟前"
} else if interval < 60 * 60 * 24{
return "\(interval/60/24)小时前"
}
}else if calendar.isDateInYesterday(date){
CommonDateFormatter.dateFormat = "HH:mm"
//不是今天
return "昨天 \(CommonDateFormatter.stringFromDate(date))"
} else{
//今年的某一天
CommonDateFormatter.dateFormat = "MM:dd HH:mm"
return CommonDateFormatter.stringFromDate(date)
}
}else{
//如果不是今年
CommonDateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
return CommonDateFormatter.stringFromDate(date)
}
return ""
}
class func isThisYear(date:NSDate) -> Bool{
CommonDateFormatter.dateFormat = "yyyy"
//1.获取当前年份字符串
let currentYearStr = CommonDateFormatter.stringFromDate(NSDate())
//2.获取微博年份字符串
let statusYearStr = CommonDateFormatter.stringFromDate(date)
return currentYearStr == statusYearStr
}
}

本文介绍了一种将时间字符串转换为易于理解的分类格式的方法,并提供了一个具体的Swift代码实现示例。该方法能够根据时间字符串自动判断并转换为“刚刚”、“几分钟前”等常见表述,适用于社交应用中创建时间的显示。
427

被折叠的 条评论
为什么被折叠?



