GrandTime 1.4.0

GrandTime 1.4.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Oct 2018
SPMSupports SPM

Maintained by DuckDeck.



GrandTime 1.4.0

  • By
  • DuckDeck

GrandTime

【开发GrandTime的目的很简单,是用来代替NSDate,它提供了用户友好的,方便的简单的API,同时还有一个弱Timer,用来代替NSTimer】

【GrandTime是一个简单的,用户友好的同时也很强力的时间工具,大家都明白的,iOS自带的NSDate类很不好,非常难用,所以我开发了GrandTime来代替NSDate(并非所有功能),GrandTime由DateTime,TimeSpan 和 GrandTimer组成, GrandTimer是一个弱Timer,它可以自动回收内存当ViewController被pop出去时,下面我将在demo代码里战展示】

【关键特点】

  • 【非常友好和简单的API设计】
  • 【使用专门的类TimeSpan来表示时间间隔】
  • 【重载了操作符,可以使用操作符来极为简单地操作DateTime】
  • 【GrandTimer是一个weak 计时器。当ViewController被弹出时,他会自动停止调用并销毁】

【系统要求】

【Xcode 7.3 and iOS 8.0 最新的Swift版本】

##【安装】

  • 【使用Cocoapods安装, pod 'GrandTime'】
  • 【手动导入,只要把项目拖进你的文件就行】

【怎么使用】

【请参考以下代码】

      print("----------------------------------下面是DateTime----------------------------------")

     //正面看看构造函数
    let a = DateTime() //直接初始化
    print(a)
    let c = DateTime(date: NSDate(timeInterval: 3600, sinceDate: NSDate())) //使用NSDate初始化
    print(c)
    let e = DateTime(tick: 1000000) //使用Tick初始化  从1970年开始
    print(e)
    let f = DateTime(tickSinceNow: 60000) //使用Tick初始化  从现在年开始
    print(f)
    let g = DateTime(timestamp: 100000)//使用Stamp初始化
    print(g)
    let h = DateTime(year: 2008, month: 2, day: 29) //使用年月日初始化
    print(h)
    let i = DateTime(year: 2016, month: 12, day: 12, hour: 11, minute: 44, second: 12, millisecond: 111)!//使用年月日时分秒毫秒初始化
    print(i)
            
    
    let timeSpanOneMinute = TimeSpan.fromMinuts(1)   //声明一个一分钟的TimeSpan
    let dToOneMinuteBefore = a - timeSpanOneMinute      // 一分钟前
    print("一分钟前\(dToOneMinuteBefore)")
    let dToOneMinuteAfter = a + timeSpanOneMinute // 一分钟后
    print("一分钟后\(dToOneMinuteAfter)")
            
   //两个DateTime相减生成一个TimeSpan
    let span = c - a
            
    print("a和c相差一小时\(span)")
            
    print("a>c:\(a>c)")
    rint("a<c:\(a<c)")
            
    
            
            
            
    a.addYears(1)   //加一年
    print("add Years:\(a)")
    a.addMonth(1)   // 加 一个月
    print("add addMonth:\(a)")
    a.addDays(1)    // 加一天
    print("add addDays:\(a)")
    a.addHours(1)   // 加一个小时
    print("add addHours:\(a)")
    a.addMinutes(1) // 加一分钟
    print("add addMinutes:\(a)")
    a.addSeconds(1) // 加一秒
    print("add addSeconds:\(a)")
    
            
            
    //下面获取部分
    print("获取i的各部分:year:\(i.year),   month:\(i.month),   day:\(i.day),   hour:\(i.hour),   minute:\(i.minute),   second:\(i.second),   minute:\(i.minute),   ticks:\(i.ticks),   ")
            
    //还可以直接设置各部分
    i.year = 2015
    i.month = 1
    i.day = 12
    i.hour = 12
    i.minute = 23
    i.second = 12
    i.millisecond = 555
    print("再次获取i的各部分:year:\(i.year),   month:\(i.month),   day:\(i.day),   hour:\(i.hour),   minute:\(i.minute),   second:\(i.second),   minute:\(i.minute),   ticks:\(i.ticks),   ")
    //获取季度和星期相关数据
    print("星期几:\(i.weekDay)")
    print("第几季度:\(i.quarter)")
    print("一年的第几周:\(i.weekOfYear)")
    print("一个月的第几周:\(i.weekOfMonth)")
    print("一年的第几天:\(i.dayOfYear)")
            
            
    print("获取日期部分\(i.dateString)")  //获取日期部分
    print("获取时间部分\(i.timeString)")     //获取时间部分
            
    print("默认格式\(i.format())")
    print("自定义格式\(i.format("yyyy年MM月dd日#EEEE"))")
    print("各种输出style的原生的一样")
    print("LongStyle: \(i.format(.ShortStyle, timeFormat: .ShortStyle))")
    print("LongStyle: \(i.format(.MediumStyle, timeFormat: .MediumStyle))")
    print("LongStyle: \(i.format(.LongStyle, timeFormat: .LongStyle))")
    print("LongStyle: \(i.format(.FullStyle, timeFormat: .FullStyle))")
    i.local = NSLocale(localeIdentifier: "en_US")
    print("把地区设为US")
    print("LongStyle: \(i.format(.ShortStyle, timeFormat: .ShortStyle))")
    print("LongStyle: \(i.format(.MediumStyle, timeFormat: .MediumStyle))")
    print("LongStyle: \(i.format(.LongStyle, timeFormat: .LongStyle))")
    print("LongStyle: \(i.format(.FullStyle, timeFormat: .FullStyle))")
            
            
    //下面是timespan
    print("----------------------------------下面是TimeSpan----------------------------------")
    //先看看构造函数
    
    let o = TimeSpan()                                                                 //直接初始化
    print(o)    
    let p = TimeSpan(days: 1, hours: 0, minutes: 11, seconds: 31)   //使用天,小时,分钟,秒来初始化
    print(p)
    let q = TimeSpan(days: 20, hours: 11, minutes: 39, seconds: 21, milliseconds: 111)!   //使用天,小时,分钟,秒还有来初始化
    print(q)
    let r = TimeSpan(ticks: 9826127)   //使用tick来初始化
    print(r)
            
    //下面获取部分
    print("获取i的各部分:  day:\(q.days),   hour:\(q.hours),   minute:\(q.minutes),   second:\(q.seconds),   minute:\(q.milliseconds),  ticks:\(q.ticks),   ")
    //获取计算的总体部分
    print("获取i的各部分:  totalDays:\(q.totalDays),   totalHours:\(q.totalHours),   totalMinutes:\(q.totalMinutes),   second:\(q.totalSeconds)")
    //单独设定属性
    q.days = 4
    q.hours = 22
    q.minutes = 12
    q.seconds = 32
    q.milliseconds = 343
    print("获取i的各部分:  day:\(q.days),   hour:\(q.hours),   minute:\(q.minutes),   second:\(q.seconds),   minute:\(q.milliseconds),   ticks:\(q.ticks),   ") 
    print("获取i的各部分:  totalDays:\(q.totalDays),   totalHours:\(q.totalHours),   totalMinutes:\(q.totalMinutes),   second:\(q.totalSeconds)")
    
        //使用from 函数
    print("使用from函数")
    var s = TimeSpan.fromDays(1) //一天
    print(s)
    s = TimeSpan.fromHours(2.5) //2.5小时
    print(s)
    s = TimeSpan.fromMinuts(89.2)//89.2分钟
    print(s)
    s = TimeSpan.fromSeconds(134)//134秒
    print(s)
    s = TimeSpan.fromTicks(123123123)//123123123 tick
    print(s)
            
    print("下面看加减")
    s = s.add(r)  //可以用这个加
    print(s)
    s = s.subtract(r)  //可以用这个减
    print(s)
    print("运算符+ - 也一样")
    s = s + r
    print(s)
    s = s - r
    print(s)
            

DateTime和TimeSpan的使用足够简单 下面是GrandTimer的用法

 var timer:GrandTimer?  //在ViewController里面声明一个变量
 var seco2 = 0
  override func viewDidLoad() {
     //使用者要注意,这个timer本身是waak的,所以需要一个外部变量来强引用, 所以需要赋值给一个外部变量才行
     //如果要让timer正确地释放内存,那么要使用weakself
     timer =  GrandTimer.every(TimeSpan.fromSeconds(1)) {
        weakSelf!.seco2 = weakSelf!.seco2 + 1
        weakSelf!.lblTimer.text = "\(weakSelf!.seco2)"
     }
//如果pop出来,timer是可以自动回收内存的

【联系我】

【任何问题或者BUG请直接和我联系[email protected], 我会乐于帮你解决】