Swift4
原本swfit3的方法雖然笨,但至少有得到所想要的效果。但是在swift4那方法會出現警告,沒意外是即將停用。所以就改寫成以下方法
let Bitrh = "2017-09-21 09:17:07 +0000"
        let year = Bitrh.prefix(4)//取得字串到第幾字元 Bitrh.prefix(Int)
        print("這是年:\(year)")
        
        let Monthstart = Bitrh.index(Bitrh.startIndex, offsetBy: 5)//從第幾字元開始算起
        let Monthend = Bitrh.index(Monthstart, offsetBy: 2)//在Monthstart中從頭取自第幾字元
        let month = Bitrh[Monthstart..<Monthend]//利用rang的方式取出該字元Monthstart是起始至Monthend,因Monthend只要求兩個字元所以month就會印出兩字元
        print("這是月:\(month)")
        let Daystart = Bitrh.index(Bitrh.startIndex, offsetBy: 8)//同月份做法
        let Dayend = Bitrh.index(Daystart, offsetBy: 2)
        let Day = Bitrh[Daystart..<Dayend]
        print("這是日:\(Day)")
打印出來結果就跟swift3是一樣的效果
Swift3
因為某些原因用到了擷取字串,下面所有
"111"是用來計算字元用的所以隨便輸入皆可
let date = "2016-11-15"
        
        let dateString = String(describing: date)
        
        print(dateString)
        取出前四個字元使用.substring(to:String.Index)
        let year = dateString.substring(to: "1111".endIndex)
        
        print("年:\(year)")
        從第幾字元開始取用使用.substring(form:String.Index)
        let birthmonth = dateString.substring(from: "11111".endIndex);
        因為只要月份兩字元所以在做一次第一步驟
        let month = birthmonth.substring(to: "11".endIndex)
        
        print("月:\(month)")
        再來第二步驟已經從月開始所以直接在呼叫第二步驟宣告的值在做一次第二步驟
        let birthday = birthmonth.substring(from: "111".endIndex)
        最後再重複一次第一步驟
        let day = birthday.substring(to: "11".endIndex);
        
        print("日:\(day)")
這樣print出來會是這樣,如下圖: