public extension NSDate {
// MARK: 这是一个综合的写法
class func createdateWithStr(time: String) -> NSString {
// 1. 将服务器返回给我们的时间字符串转化为NSDate
// 1.1.创建formatter
let formatter = DateFormatter()
// 1.2.设置时间格式
formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
// 1.3.设置时间的区域(真机必须设置,负责可能转化不成功)
formatter.locale = NSLocale(localeIdentifier: "en") as Locale!
// 1.4.转化字符串,转化好的字符串是去除时区的时间
let date = formatter.date(from: time)
let calendar = NSCalendar.current
// 1.判断是否为今天
if calendar.isDateInToday(date!) {
// 1.0获取当前时间与紫铜时间之间的差距(秒数)
let since = Int(NSDate().timeIntervalSince(date!))
// 1.1.是否为刚刚
print(since)
if since < 60
{
return "刚刚"
}
// 1.2.多少分钟以前
if since < 60 * 60
{
return "\(since/60)分钟前" as NSString
}
// 1.3.多少小时以前
return "\(since/(60 * 60))小时前" as NSString
}
// 2.0.判断是否为昨天
var formatterStr = "HH:mm"
if calendar.isDateInYesterday(date!) {
// 昨天
formatterStr = "昨天:" + formatterStr
}else{
// 取到当前时间
let currentDate = NSDate()
// 初始化时间格式化器
let df = DateFormatter()
// 指定格式
df.dateFormat = "yyyy"
// 格式当前时间与目标时间成字符串
let currentDateString = df.string(from: currentDate as Date)
let dateString = df.string(from: date!)
// 判断是不是今年
if (currentDateString as NSString).isEqual(to: dateString)
{
// 是今年
// 3. 处理一年以内
formatterStr = "MM-dd-" + formatterStr
}else{
// 4.不是今年
formatterStr = "yyyy-MM-dd-" + formatterStr
}
}
// 5.按照指定的格式将时间转化为字符串
// 5.1.创建formatter
let formatter1 = DateFormatter()
// 5.2.设置时间格式
formatter1.dateFormat = formatterStr
// 5.3.设置时间的区域(真机必须设置,负责可能转化不成功)
formatter1.locale = NSLocale(localeIdentifier: "en") as Locale!
// 5.4.格式化
return formatter1.string(from: date!) as NSString
}
}