我目前得到的JSON數據對該格式的日期:如何添加一個Int到NSDate?
Date = "2016-07-21T18:32:24.347Z"
我需要能夠添加一個int或浮點數表示分鐘(60分鐘計)
我怎麼能做這個?
我目前得到的JSON數據對該格式的日期:如何添加一個Int到NSDate?
Date = "2016-07-21T18:32:24.347Z"
我需要能夠添加一個int或浮點數表示分鐘(60分鐘計)
我怎麼能做這個?
因此,有如百萬種不同的方式,你可以做到這一點,但這可能不是你在這裏尋找的。玩這些東西的最好方法就是在操場上,這樣你可以看到代碼的變化是如何影響最終結果的。
所以首先你需要一個函數,可以把一個字符串作爲參數。
func dateFromJSON(dateString: String?) -> NSDate? {}
這個功能將在我們的string
,回到我們NSDate
然後,我們需要的日期格式,有很多不同的方法可以格式化日期,你可以在這裏對他們檢查出的文檔NSDateFormatter Documentation
所以這裏是一個格式化程序"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"
的例子,你可以很快看到不同的部分引用日期的不同peices。 IE yyyy
是在這種情況下的一年會給我們像2016
。如果它是yy
我們只會得到16
。
初始化dateFormatter,然後應用我們的格式。
您還應該進行一些檢查以確保您的代碼安全。所以它應該看起來像這樣。
func dateFromWebJSON(dateString: String?) -> NSDate? {
guard let dateString = dateString else {
return nil
}
let formatter = NSDateFormatter()
let date = ["yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"].flatMap { (dateFormat: String) -> NSDate? in
formatter.dateFormat = dateFormat
return formatter.dateFromString(dateString)
}.first
assert(date != nil, "Failed to convert date")
return date
}
所以現在我們可以稱之爲
let time = dateFromWebAPIString(date)
print(time) // Jul 21, 2016, 12:32 PM
現在加入,你必須記住,1 NSTimeInterval是1秒的時間。所以,做一些基本的數學
let min = 60
let hr = 60 * min
那麼我們可以添加儘可能多的時間,只要你想
let newTime = time?.dateByAddingTimeInterval(NSTimeInterval(20 * min))
print(newTime) // "Jul 21, 2016, 12:52 PM"
20分鐘後。希望這會有所幫助
這是非常豐富的信息,比我在網上找到的任何東西都更好,謝謝你的幫助! – SwiftyJD
我已經完成了很多工作,並且仍然需要時刻檢查。我很高興這很有幫助。 –
只需將字符串轉換爲日期並使用日曆方法dateByAddingUnit向其添加分鐘即可。 –
我從來沒有這樣做過,你是怎麼做到的? – SwiftyJD
http://stackoverflow.com/a/30269467/2303865 –