swift之extension探究
扩展是给已经存在的类(class),结构体(structure),枚举类型(enumeration)和协议(protocol)增加新的功能。类似Objective-C中的Category,不同的是,Extension没有名字。扩展可以做以下事情:
注:扩展可以增加新的功能,但是不能覆盖已有的功能 /** 刚刚(一分钟内) X分钟前(一小时内) X小时前(当天) 昨天HH:mm(昨天) MM-dd HH:mm(一年内) yyyy-MM-dd HH:mm(更早期) */ import Foundation import UIKit extension Date { static func dateWithStr(_ time: String) ->Date {
// 1.将服务器返回给我们的时间字符串转换为NSDate // 1.1.创建formatter let formatter = DateFormatter() // 1.2.设置时间的格式 formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy" // 1.3设置时间的区域(真机必须设置,否则可能不能转换成功) formatter.locale = Locale(identifier: "en") // 1.4转换字符串,转换好的时间是去除时区的时间 let createdDate = formatter.date(from: time)!
return createdDate }
var descDate:String{
let calendar = Calendar.current
// 1.判断是否是今天 if calendar.isDateInToday(self) { // 1.0获取当前时间和系统时间之间的差距(秒数) let since = Int(Date().timeIntervalSince(self)) print("since = (since)") // 1.1是否是刚刚 if since < 60 { return "刚刚" } // 1.2多少分钟以前 if since < 60 * 60 { return "(since/60)分钟前" }
// 1.3多少小时以前 return "(since / (60 * 60))小时前" }
// 2.判断是否是昨天 var formatterStr = "HH:mm" if calendar.isDateInYesterday(self) { // 昨天: HH:mm formatterStr = "昨天:" + formatterStr }else { // 3.处理一年以内 formatterStr = "MM-dd " + formatterStr
// 4.处理更早时间 let comps = (calendar as NSCalendar).components(NSCalendar.Unit.year,from: self,to: Date(),options: Options(rawValue: 0)) if comps.year! >= 1 { formatterStr = "yyyy-" + formatterStr } }
// 5.按照指定的格式将时间转换为字符串 // 5.1.创建formatter let formatter = // 5.2.设置时间的格式 formatter.dateFormat = formatterStr // 5.3设置时间的区域(真机必须设置,170)">Locale(identifier: "en") // 5.4格式化
return formatter.string(from: self) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |