swift之extension探究

swift之extension探究,第1张

概述扩展是给已经存在的类(class),结构体(structure),枚举类型(enumeration)和协议(protocol)增加新的功能。类似Objective-C中的Category,不同的是,Extension没有名字。扩展可以做以下事情: 增加计算实例属性和计算类型属性 定义实例方法和类型方法 提供新的初始化器 定义下标 定义和使用新的内置类型 让一个存在的类型服从一个协议 注:扩展可以增

扩展是给已经存在的类(class),结构体(structure),枚举类型(enumeration)和协议(protocol)增加新的功能。类似Objective-C中的category,不同的是,Extension没有名字。扩展可以做以下事情:

增加计算实例属性和计算类型属性 定义实例方法和类型方法 提供新的初始化器 定义下标 定义和使用新的内置类型 让一个存在的类型服从一个协议

注:扩展可以增加新的功能,但是不能覆盖已有的功能

出自:http://www.jianshu.com/p/edf4cad8dfd5

/**

刚刚(一分钟内)

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)")

@H_634_403@// 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

{

@H_634_403@// 3.处理一年以内

formatterStr = "MM-dd " + formatterStr

@H_634_403@// 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)

}

}

总结

以上是内存溢出为你收集整理的swift之extension探究全部内容,希望文章能够帮你解决swift之extension探究所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1058972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存