swift开发 创建Extension(即OC中的category)
来源:互联网 发布:sql存储过程语法 编辑:程序博客网 时间:2024/06/05 11:39
上图:
第一步:
第二步:
第三部,没了;
PS:上面是swift2.x版本的写法,新的版本没有图一Aerolitec Templates选项了,只有一个swift file 只有创建好,自己写了;
来个例子:(没测试,直接swift3.0把2.x版的转换过来的)
//// NSDate+Extension.swift// 时间NSDate的类别//// Created by 小广 on 16/5/5.// Base on Aerolitec Template// Copyright © 2016年 小广. All rights reserved.//import Foundationenum FormatType:Int{ case all // yyyy-MM-dd HH:mm:ss case toDay // yyyy-MM-dd case toMinute // yyyy-MM-dd HH:mm}extension Date { // MARK: -> Class methods /** 将日期以格式化的方式转化成字符串 - parameter date: 时间 - parameter format: 时间的格式化形式 - returns: 时间字符串 */ static func stringFormat(_ date: Date, format: String) -> String? { let formatter = DateFormatter(); formatter.dateFormat = format; // NSLocale(localeIdentifier: "zh_Hans_CN");// 中国时区 formatter.locale = Locale.current; let dateString = formatter.string(from: date); return dateString; } /** 将 日期字符串 通过 格式化 转换成 时间对象NSDate() - parameter dateString: 时间字符串 - parameter format: 时间的格式化形式 - returns: 时间 */ static func dateFormat(_ dateString: String, format: String) -> Date? { let formatter = DateFormatter(); formatter.dateFormat = format; let date = formatter.date(from: dateString); return date; } /** * 获取 MM-dd HH:mm 格式的 时间字符串 */ static func shortDateTime(_ date: Date) -> String? { let format = "MM-dd HH:mm"; return Date.stringFormat(date, format: format); } /** 格式化时间到天 - parameter 格式: yyyy-MM-dd */ static func dateStringToDay(_ date: Date) -> String? { let format = "yyyy-MM-dd"; return Date.stringFormat(date, format: format); } /** 格式化时间到分 - parameter 格式: yyyy-MM-dd HH:mm */ static func dateStringToMinute(_ date: Date) -> String? { let format = "yyyy-MM-dd HH:mm"; return Date.stringFormat(date, format: format); } /** 格式化时间到秒 - parameter 格式: yyyy-MM-dd HH:mm:ss */ static func dateStringToSecond(_ date: Date) -> String? { let format = "yyyy-MM-dd HH:mm:ss"; return Date.stringFormat(date, format: format); } // /** 取到当前月份第一天 例: 2016-01-01 01:00:00 - returns: 时间字符串 */ static func currentMonthFirstDay() -> String { var tempDateStr = Date.dateStringToDay(Date()); let index = tempDateStr!.characters.index(tempDateStr!.startIndex, offsetBy: 7); tempDateStr = tempDateStr!.substring(to: index); let dateString = tempDateStr! + "-01 01:00:00"; return dateString; } /** * 获取时间戳(秒) */ static func timestamp(_ date: Date) -> String { let interval = date.timeIntervalSince1970; return String(format: "%.0f",interval); } /** * 获取时间戳(毫秒) */ static func timestampMillisecond(_ date: Date) -> String { let interval = date.timeIntervalSince1970; return String(format: "%.0f",(interval * 1000)); } /** * 时间的显示(将过去的时间字符串显示出来),格式必须是:"2016-06-06 12:00:00" */ static func formatedElapsedTimeByString(_ dateString: String) -> String { //print("dateString的长度是===+\(dateString.characters.count)"); let date = Date.dateFormat(dateString, format: "yyyy-MM-dd HH:mm:ss"); if date == nil {return "传入的时间格式错误"} return Date.formatedElapsedTimeByDate(date!); } /** * 时间的显示(将过去的时间显示出来) */ static func formatedElapsedTimeByDate(_ date: Date) -> String { let calendar = Calendar.current; let unitFlags:NSCalendar.Unit = [.minute, .hour, .day, .weekOfMonth, .month, .year]; let latest = Date(); let components = (calendar as NSCalendar).components(unitFlags, from: date, to: latest, options: NSCalendar.Options.wrapComponents) if (components.year! >= 1) { return Date.dateStringToDay(date)!; //return NSDate.stringForComponentValue(components.year, name: "年", plural: "年"); } if (components.month! >= 1) { return Date().stringForComponentValue(components.month!, name: "个月", plural: "个月") } if (components.weekOfMonth! >= 1) { return Date().stringForComponentValue(components.weekOfMonth!, name: "周", plural: "周"); } if (components.day! >= 1) { return Date().stringForComponentValue(components.day!, name: "天", plural: "天"); } if (components.hour! >= 1) { return Date().stringForComponentValue(components.hour!, name: "小时", plural: "小时"); } if (components.minute! >= 1) { return Date().stringForComponentValue(components.minute!, name: "分钟", plural: "分钟"); } return "刚刚"; } //MARK: - 在时间上加上一定的时间 /** 将时间加上以 年 为单位的时间数 - parameter date: 时间date - parameter years: 年数 - returns: date */ static func dateByAddingYears(_ date: Date, years: Int) -> Date? { let calendar = Calendar.current; var components = DateComponents(); components.year = years; return (calendar as NSCalendar).date(byAdding: components, to: date, options: NSCalendar.Options.wrapComponents); } /** 将时间加上以 月 为单位的时间数 - parameter date: 时间date - parameter months: 月数 - returns: date */ static func dateByAddingMonths(_ date: Date, months: Int) -> Date? { let calendar = Calendar.current; var components = DateComponents(); components.month = months; return (calendar as NSCalendar).date(byAdding: components, to: date, options: NSCalendar.Options.wrapComponents); } /** 将时间加上以 周 为单位的时间数 - parameter date: 时间date - parameter weeks: 周数 - returns: date */ static func dateByAddingWeeks(_ date: Date, weeks: Int) -> Date? { let calendar = Calendar.current; var components = DateComponents(); components.weekOfYear = weeks; return (calendar as NSCalendar).date(byAdding: components, to: date, options: NSCalendar.Options.wrapComponents); } /** 将时间加上以 天 为单位的时间数 - parameter date: 时间date - parameter days: 天数 - returns: date */ static func dateByAddingDays(_ date: Date, days: Int) -> Date { let aTimeInterval = date.timeIntervalSinceReferenceDate + Double(86400 * days) ; let newDate = Date(timeIntervalSinceReferenceDate: aTimeInterval); return newDate; } /** 将时间加上以 小时 为单位的时间数 - parameter date: 时间date - parameter hours: 小时数 - returns: date */ static func dateByAddingHours(_ date: Date, hours: Int) -> Date { let aTimeInterval = date.timeIntervalSinceReferenceDate + Double(3600 * hours) ; let newDate = Date(timeIntervalSinceReferenceDate: aTimeInterval); return newDate; } /** 将时间加上以 分钟 为单位的时间数 - parameter date: 时间date - parameter minutes: 分钟数 - returns: date */ static func dateByAddingMinutes(_ date: Date, minutes: Int) -> Date { let aTimeInterval = date.timeIntervalSinceReferenceDate + Double(60 * minutes) ; let newDate = Date(timeIntervalSinceReferenceDate: aTimeInterval); return newDate; } /** 将时间加上以 秒 为单位的时间数 - parameter date: 时间date - parameter seconds: 秒数 - returns: date */ static func dateByAddingSeconds(_ date: Date, seconds: Int) -> Date { let aTimeInterval = date.timeIntervalSinceReferenceDate + Double(seconds) ; let newDate = Date(timeIntervalSinceReferenceDate: aTimeInterval); return newDate; } // MARK: -> 内部方法 // 拼接显示的时间字符串 func stringForComponentValue(_ componentValue: Int, name: String, plural: String) -> String { let timespan = componentValue == 1 ? name : plural; return String(format: "%ld%@%@",componentValue, timespan, "前"); }}
0 0
- swift开发 创建Extension(即OC中的category)
- OC中的类别Category-协议Protocol-扩展Extension
- OC的category和extension
- OC 类目category,延展extension,协议protocol
- OC第七天 --- NSDate Category Extension Protocol
- OC基础之Category,Extension,Protocol
- OC Category 分类 Extension 延展.md
- ios中的category与extension
- ios中的category与extension
- ios中的category与extension
- ios中的category与extension
- OC中的通知(NSNotification)、类目(Category)、延展(Extension)
- 【iOS沉思录】OC中的类扩展机制:Category类别和Extension类扩展
- iOS开发之OC篇(12)—— Category(分类)、Extension(扩展)
- OC中的分类Category
- OC中的Category类别
- swift中的extension(扩展)
- Swift 中的扩展 (Extension)
- 你好
- Android主题换肤 无缝切换
- Android性能优化典范(一)
- hdu 3294 Girls' research
- 关于AndroidStudio中包重复引用的问题(Duplicate Entry)
- swift开发 创建Extension(即OC中的category)
- Qt5中部分自带控件菜单(QLineEdit、QTextEdit右键菜单)的汉化
- org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exceptio
- IP数据包个人理解
- vim的基本命令
- C++ rand()
- Spring Security 4 安全视图片段 使用标签(Spring Security 标签)
- 从Android到Swift iOS开发:语言与框架对比
- Beyond Compare几种方便的功能