swift之extension探究
来源:互联网 发布:三星s5数据备份apk下载 编辑:程序博客网 时间:2024/05/22 10:34
扩展是给已经存在的类(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
{
staticfunc 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 = (calendaras NSCalendar).components(NSCalendar.Unit.year, from: self, to: Date(), options:NSCalendar.Options(rawValue:0))
if comps.year! >=1
{
formatterStr = "yyyy-"+ formatterStr
}
}
// 5.按照指定的格式将时间转换为字符串
// 5.1.创建formatter
let formatter =DateFormatter()
// 5.2.设置时间的格式
formatter.dateFormat = formatterStr
// 5.3设置时间的区域(真机必须设置,否则可能不能转换成功)
formatter.locale =Locale(identifier:"en")
// 5.4格式化
return formatter.string(from:self)
}
}
- swift之extension探究
- Swift之extension
- Swift之extension的使用
- swift extension
- Swift Extension
- 五 Swift学习之扩展(Extension)
- Swift扩展(Extension)
- swift String extension
- swift extension Int
- Swift:Extension和Protocol
- swift string extension
- Swift String Extension
- swift 2.0 延展 Extension
- Swift 扩展(extension)
- Swift UIColor Extension (扩展)
- swift分类extension
- swift中的extension(扩展)
- Swift-Extension的理解
- 数据结构——堆
- Jupyter Notebook
- XZ_HTML5之超链接和锚点
- 阿里巴巴2016校园招聘 前端开发工程师(一)
- S标签
- swift之extension探究
- 【源码】String
- VGGNet网络模型
- Render RenderContents RenderControl 三个方法的区别
- RabbitMQ基础概念详细介绍
- Docker技术剖析--docker网络配置(二)
- linux 从一台机器复制文件到另一台linux机器上去
- 【2013南京现场赛】1002 hdu4803 Poor Warehouse Keeper 贪心
- 解决Android studio开发找不到HttpClient问题