zoukankan      html  css  js  c++  java
  • SwiftDate 浅析

    SwiftDate是Github上开源的,使用Swift语言编写的NSDate封装库,可以很方便的在Swift中处理日期,

    比如日期创建,比较,输出等。

    特性

    • 支持数学运算符进行日期计算(比如myDate + 2.week + 1.hour)
    • 支持比较运算符(比如<,>,==,<=,>=)
    • 快速获取/修改日期各部分内容(比如获取或修改日期中的月份)
    • 提供通用格式化输出或自定义的格式化输出
    • 提供一系列.toString方法
    • 提供简便的方法获取yesterday,tomorrow等

    依赖

    • iOS 8.0+ / Mac OS X 10.10+
    • Xcode 6.4
    • Swift 1.2

    使用

    CocoaPods安装SwiftDate

    我们需要通过CocoaPods安装SwitDate,如果你还没有安装cocoapods,可以通过如下命令安装

    $ gem install cocoapods 

    然后在你的Xcode项目中的Podfile文件中,添加如下内容:

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '8.0'
    use_frameworks!
    
    pod 'SwiftDate'

    最后,执行如下命令安装

    $ pod install 

    创建日期

    • 通过解析字符串创建
    let date_custom = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD")) 
    • 通过指定日期各部分创建
    let date_from_components = NSDate.date(refDate: nil, year: 2014, month: 01, day: nil, hour: nil, minute: nil, second: nil, tz: "UTC")
    • 通过String类的toDate方法创建
    let date = "2015-07-26".toDate(formatString: "YYYY-MM-DD") 
    • 通过NSDate的静态方法创建
    let todayDate = NSDate.today()
    let yesterdayDate = NSDate.yesterday()
    let tomorrowDate = NSDate.tomorrow()

    获取日期中年月日等信息

    我们可以通过NSDate的以下属性获取

    .year
    .month
    .weekOfMonth
    .weekday
    .weekdayOrdinal
    .day
    .hour
    .minute
    .second
    .era
    .firstDayOfWeek // (first day of the week of passed date)
    .lastDayOfWeek // (last day of the week of passed date)
    .nearestHour // (nearest hour of the passed date)
    .isLeapYear() // true if date's represented year is leap
    .monthDays() // return the number of days in date's represented month

    修改日期

    var date = NSDate()
    date = date.set("hour",value: 12)!
    date = date.set("day",value: 1)!

    日期运算

    let date = NSDate()
    let tomorrow = date+1.day
    let two_months_ago = date-2.months

    时区转换

    let date = NSDate() //本地时区
    let date_as_utc = date.toUTC() //UTC 时间
    let date_as_beijing = date_as_utc.toTimezone("UTC+8") //北京时间

    日期比较

    我们可以通过数学运算符比较

    let date1 = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD"))
    let date2 = NSDate.date(fromString: "2015-07-27", format: DateFormat.Custom("YYYY-MM-DD"))
    
    if date2 > date1 {
    
      // TODO something
    
    }

    还可以通过NSDate的以下一些方法来比较

    let isInRange : Bool = date1.isInTimeRange("11:00","15:00") 
    .isToday()  // true if represented date is today
    .isTomorrow()
    .isYesterday()
    .isThisWeek() // true if represented date's week is the current week
    .isSameWeekOf(date: NSDate) // true if two dates share the same year's week
    .dateAtWeekStart() // return the date where current's date week starts
    .beginningOfDay() // return the same date of the sender with time set to 00:00:00
    .endOfDay() // return the same date of the sender with time set to 23:59:59
    .beginningOfMonth() // return the date which represent the first day of the sender date's month
    .endOfMonth() // return the date which represent the last day of the sender date's month
    .beginningOfYear() // return the date which represent the first day of the sender date's year
    .endOfYear() // return the date which represent the last day of the sender date's year
    .isWeekday() // true if current sender date is a week day
    .isWeekend() // true if current sender date is a weekend day (sat/sun)

    NSDate转换为字符串

    let string = date.toString(format: DateFormat.Custom("YYYY-MM-DD")) 

    也可以在转换方法中指定NSDateFormatterStyle

    let string = date.toString(dateStyle: .ShortStyle timeStyle:.LongStyle relativeDate:true)


    还可以通过以下方法转换为特定的字符串

    .toISOString() //  DateFormat.ISO8601
    .toShortString() // short style, both time and date are printed
    .toMediumString() // medium style, both time and date are printed
    .toLongString() // full style, both time and date are printed
    .toShortDateString() // short style, print only date
    .toShortTimeString() // short style, print only time
    .toMediumDateString() // medium style, print only date
    .toMediumTimeString() // medium style, print only time
    .toLongDateString() // long style, print only date
    .toLongTimeString() // long style, print only time


    最后我们还可以输出相对时间的格式,比如输出”2 hours ago”

    var d = NSDate()-2.hour
    var abb = d.toRelativeString(abbreviated: true, maxUnits: 3)
    println("data: (abb)")

     举例:

    let date  = self!.viewModel.userResumeModelList.value![0].recordDate!.toDate(DateFormat.Custom("yyyy/MM/dd"))

                    self?.detailVC.getNetworkRequest(date!)

    Github

    SwiftDate

    转载自:http://www.open-open.com/lib/view/open1437920495622.html

  • 相关阅读:
    LeetCode-Longest Substring Without Repeating Characters
    LeetCode-Add Two Numbers
    LeetCode-Two Sum
    品格的塑造
    闰年的来历
    float在内存中的存取方法
    矩阵顺时针旋转90度
    研究生毕业论文查重
    PAT1009
    PAT1008
  • 原文地址:https://www.cnblogs.com/Jenaral/p/5616662.html
Copyright © 2011-2022 走看看